今天想和大家分享一篇关于干可视化的文章。它介绍了强大的开源Python绘图库Plotly,并教您如何使用超级简单(甚至一行!)的代码绘制更好的图表。之前之所以一直在使用matplotlib,是因为学习了它复杂的语法,以及“沉”在其中的数百小时的时间成本。这也导致我花了无数个深夜在StackOverflow上搜索如何“格式化日期”或“添加第二个y轴”。但我们现在有一个更好的选择——比如Plotly,一个易于使用、文档齐全且功能强大的开源Python绘图库。今天就带大家深入体验,了解它是如何用超简单(哪怕是一行!)的代码绘制出更好的图表。更多技术干货,请到gzh【Python编程学习圈】了解更多,海量学习资料和教程等你来。本文所有代码已在Github上开源,所有图表均有交互,请使用Jupyternotebook查看。(plotly绘制的示例图表。图片来源:plot.ly)Plotly概述plotly的Python包是一个基于plot.js的开源代码库,它基于d3.js。我们实际使用的是一个封装了plotly的库,叫做cufflinks,它可以让你更方便地使用plotly来处理Pandas数据表。*注:Plotly本身是一家可视化技术公司,拥有多种不同的产品和开源工具集。Plotly的Python库可以免费使用。在离线模式下,您可以创建无限数量的图表。在线模式下,因为使用了Plotly的分享服务,所以只能生成和分享25张图表。本文中的所有可视化都是在JupyterNotebook中以离线模式使用plotly+cufflinks库完成的。使用pipinstallcufflinksplotly安装后,你可以在Jupyter中导入它,代码如下:Univariatedistributions:histogramsandboxplots该图基本上是单变量分布分析的必备图形之一(尽管它仍然存在一些缺点)。以一篇博文的总点赞数为例,做一个简单的交互直方图:(代码中的df是一个标准的Pandasdataframe对象)(使用plotly+cufflinks创建的交互直方图)对于那些习惯于matplotlib同学,你只需要多敲一个字母(把.plot改成.iplot),就可以得到一个看起来更漂亮的交互式图表!单击图像上的元素会显示详细信息、随意缩放以及(我们将在接下来介绍)一些很酷的功能,例如突出显示某些部分。如果要绘制堆叠直方图,只需要这样做:简单处理pandas数据表,生成条形图:如上所示,我们可以将plotly+cufflinks和pandas的能力集成在一起。例如,我们可以先使用.pivot()进行数据透视表分析,然后生成条形图。比如统计每篇文章在不同发布渠道带来的新粉丝数:交互式图表带来的好处是我们可以随意挖掘数据,拆分子项进行分析。箱形图可以提供很多信息,但如果您看不到确切的值,您可能会错过大部分信息!散点图散点图是大多数分析的核心,让我们可以看到一个变量如何随时间变化,或者两个(或更多)变量之间的关系如何变化。时间序列分析在现实世界中,相当一部分数据都带有时间元素。好在plotly+cufflinks天生就有支持时间序列可视化分析的功能。以我在“TowardsDataScience”网站发表的文章数据为例,我们来构建一个以发表时间为指标的数据集,看看文章热度的变化:上图中,我们完成了使用一行代码一些事情:自动生成漂亮的时间序列X轴添加第二个Y轴,因为两个变量的范围不匹配将文章标题放在鼠标悬停时显示的标签中显示更多数据我们可以很容易地添加文本注释:(带文本注释的散点图)在下面的代码中,我们用第三个分类变量为二元散点图着色:接下来我们要稍微复杂一点:数轴。我们通过指定plotly的layout(布局)参数来实现(不同的layout请参考官方文档),我们将pointsize(size参数)绑定到一个数值变量read_ratio(阅读比例)。越大,气泡越大。如果我们想复杂一点(详见Github上的源码),我们甚至可以将4个变量塞进一张图中!(不过,不建议你真的这么做)和之前一样,我们可以结合pandas和plotly+cufflinks来实现很多有用的图表:建议你查看官方文档,或者源码,里面有更多的Examples和函数实例.只需一两行代码,您就可以在图表中添加文本注释、辅助线、最佳拟合线等有用元素,并保持原有的各种交互功能。高级绘图功能接下来,我们将详细介绍几种特殊图表。你可能不会经常使用它们,但我保证只要你用得好,它们一定会给人留下深刻印象。我们将使用plotly的figure_factory模块仅用一行代码生成很棒的图表!散点图矩阵如果我们想要探索许多不同变量之间的关系,散点图矩阵(也称为SPLOM)是一个很好的选择:即使是这样的复杂图形也是完全交互的,允许我们更详细地探索数据。关系热图为了反映多个数值变量之间的关系,我们可以计算它们的相关性,然后以带注释的热图的形式可视化:CustomThemes除了接连出现的各种图表,Cufflinks还提供了许多不同的着色主题使您可以轻松地在各种图表样式之间切换。下面两张图分别是“空间”主题和“ggplot”主题:此外还有3D图表(曲面和气泡):对于有研究兴趣的用户来说,做个大饼并不难图表:在PlotlyChartStudio中编辑在JupyterNotebook中生成这些图表后,您会注意到图表右下角出现一个小链接,上面写着“导出到plot.ly(发布到plot.ly)”.如果单击此链接,您将被重定向到“图表工作室”。从这里,您可以在最终演示之前进一步修改和润色您的图表。您可以添加标注、选择某些元素的颜色、整理所有内容并制作精美的图表。之后,您还可以将其发布到网络上,生成一个链接供其他人查看。下面两张图是图表工坊做的:说了这么多,看腻了吗?然而,我们并没有用尽这个库的所有功能。限于篇幅,还有一些比较好的图表和例子,请访问plotly和cufflinks的官方文档查看。(显示美国各地风电场数据的交互式地图)最后……沉没成本谬误最糟糕的部分是,人们往往只有在放弃之前的努力时才意识到自己浪费了多少时间。选择图形库时,您最需要的几个功能是:快速浏览数据所需的一行代码图表拆分/交互元素研究数据所需的选项在最终演示之前需要时向下钻取细节可以很容易自定义从现在开始,plotly是用Python语言实现上述功能的最佳选择。它使我们能够快速生成可视化效果,而交互功能使我们能够更好地理解信息。我承认绘图绝对是数据科学工作中最有趣的部分,并且plotly使它更加有趣。(一张图显示了随着时间的推移用Python绘图的乐趣。)2022年是时候升级你的Python绘图库,让自己在数据科学和可视化方面更快、更强、更漂亮吧!
