
()如何使用单行制作美观完全交互的图沉没成本的谬论, 是诸多有害认知偏见里, 会让人类沦为猎物的其中之一。它指的是, 我们有着倾向, 会把时间以及资源, 继续投入到失败的事业当中 , 原因在于, 我们已然耗费了大量时间, 去做必定会失败的事情。沉没成本表明, 我们不应在糟糕的工作上停留更长时间, 即便它明显行不通 , 即便要把项目拒之门外。确实如此 , 当有机会使用效率更高 、交互性更佳且外观更好的替代方案时 , 就没有理由再继续使用乏味 、过时的绘图库。在过去几个月里, 我察觉到使用的仅有缘由, 是我耗时数百小时去钻研复杂语法, 这种复杂性致使数小时的受挫之感, 搞清楚怎样格式化日期或者增添第二个y轴, 所幸此时是绘图的绝佳契机, 在探究了各类选择后, 就易用性、文档以及功能来讲, 分明的胜出者是可开发的库, 在本文当中, 我们会深入探察绘图, 学习怎样在更短时间里制作更优的绘图, 通常只需一行代码。(本文所有代码于其上得以提供, 这些全都是交互式的图表, 能够在上予以查看。of ()简要概述有着基于.js构建, 且.js又是基于d3.js构建而成之开源基础的软件包。我们会在针对数据框设计的内容里称呼其为包。所以, 我们整个技术栈呈现为cufflinks plotly.js d3.js, 这表明着在拥有让d3令人赞叹不已的交互式图形功能之际, 还能具备编码的效率。有这样一家公司, 它是图形公司, 能提供多种产品, 还有开源工具, 其库可供免费使用, 可在离线状况下制作毫无限制数量的图表, 不过在在线形势下最多仅能制作25个图表用于和世界分享。本文里的全部工作, 皆是于……之中达成了的, 而且于离线状态下运转存有绘图。借由pip开展安装以及……之后, 以……样式导入以下内容用以在……之内运行:# Standard plotly imports import plotly.plotly as py import plotly.graph_objs as go from plotly.offline import iplot, init_notebook_mode # Using plotly cufflinks in offline mode import cufflinks cufflinks.go_offline(connectedTrue) init_notebook_mode(connectedTrue)单变量分布直方图和箱线图单变量图, 它是开启分析的标准方式, 直方图呢, 是用来绘制分布图的首选图形, 虽说存在一些问题。在这儿, 运用我的中型文章统计数据, 您瞧, 可在此处查看怎样获取自己的统计数据, 或者也能在此处使用我的统计数据, 并借此制作文章点赞数量的交互式直方图, 而df是标准的数据框, 接下来:df[claps].iplot( kindhist, xTitleclaps, yTitlecount, titleClaps Distribution )made with 对于那些惯于使用的用户, 我们要做的便是再添一个字母, 即用iplot替代plot, 如此我们会得到一个样貌更佳、更具交互性的图表我们能够单击数据去获取更多详尽信息, 把它放大至绘图的各个部位, 而后如同稍后会看到的那般挑选不同的类别来突出显示。如果我们想绘制重叠的直方图那很简单df[[time_started, time_published]].iplot( kindhist, histnormpercent, barmodeoverlay, xTitleTime of Day, yTitle(%) of Articles, titleTime Started and Time Published )借助一些操作我们可以绘制一个小图# Resample to monthly frequency and plot df2 df[[view,reads,published_date]].\ set_index(published_date).\ resample(M).mean() df2.iplot(kindbar, xTitleDate, yTitleAverage, titleMonthly Average Views and Reads )如我们所见到的, 我们能够把的功能跟进行结合。对于每一个故事, 按照出版物发布的粉丝的箱线图, 我们加以使用, 随后进行绘制:df.pivot(columnspublication, valuesfans).iplot( kindbox, yTitlefans, titleFans Distribution by Publication )我们能够依据需求去浏览子集数据, 这便是交互所具备的好处。箱形图里面存在许多信息, 而且要是无法看见数字的话, 那大部分信息我们将会遗漏散点图核心是大多数分析里 的散点图, 它能让我们看到变量随时间的变化, 还能看到两个或者多个变量之间的关系。时间序列在现实世界里, 有相当一部分数据是具备时间元素的。幸运的是, 的设计对时间序列的可视化予以了考虑。我们来给我的TDS文章制作一个数据框, 接着瞧瞧趋势会怎样变化。# Create a dataframe of Towards Data Science Articles tds df[df[publication] Towards Data Science].\ set_index(published_date) # Plot read time as a time series tds[[claps, fans, title]].iplot( yclaps, modelinesmarkers, secondary_y fans, secondary_y_titleFans, xTitleDate, yTitleClaps, texttitle, titleFans and Claps over Time )在这里我们正在一行中做很多不同的事情· 自动获取格式正确的时序X轴· 添加辅助y轴因为我们的变量具有不同的范围· 添加文章标题作为悬停信息有关更多信息我们还可以轻松添加文本注释tds_monthly_totals.iplot( modelinesmarkerstext, texttext, yword_count, opacity0.8, xTitleDate, yTitleWord Count, titleTotal Word Count by Month )with对于由第三个类别变量着色的双变量散点图我们使用df.iplot( xread_time, yread_ratio, # Specify the category categoriespublication, xTitleRead Time, yTitleReading Percent, titleReading Percent vs Read Ratio by Publication )采取运用指定布局的那种对数轴, 关于布局详细情形可去查看文档获取, 并且借助数值变量去调节气泡大小, 把情况弄得更复杂些:tds.iplot( xword_count, yreads, sizeread_ratio, texttext, modemarkers, # Log xaxis layoutdict( xaxisdict(typelog, titleWord Count), yaxisdict(titleReads), titleReads vs Log Word Count Sized by Read Ratio))借助去开展更多的工作, 至于相关详细信息, 需依照笔记本去查看, 进一步地我们能够在一张图表之上放置四个变量, 然而并不建议进行如此这般的操作像以前那般, 我们能够把与 一同运用, 借此获取很有用的plot。df.pivot_table( valuesviews, indexpublished_date, columnspublication).cumsum().iplot( modemarkerslines, size8, symbol[1, 2, 3, 4, 5], layoutdict( xaxisdict(titleDate), yaxisdict(typelog, titleTotal Views), titleTotal Views over Time by Publication))倘若探寻进一步功能的更多范例予以参阅的话, 便可去瞅一瞅笔记本或者文档。我们能够借助于一行代码, 而且依旧拥有全部交互功能, 把文本注释、参考线以及最佳拟合线增添至绘图里面。高级图呈现给您的这些图表, 您或许不常应用, 当下就要将其予以说明, 它们给人的感触会较深。其极具惊人特点的功能, 就连实现保持于一行代码这儿, 都要予以采用 , 甚至还要用到。散点矩阵很多变量之间的关系, 我们要去探索时, 散点图, 也就是splom, 是个不错的选择。import plotly.figure_factory as ff figure ff.create_scatterplotmatrix( df[[claps, publication, views, read_ratio,word_count]], diaghistogram, indexpublication)即使该图是完全互动的也允许我们探索数据。关联热图为了将数值变量彼此间的相关性直观呈现出来, 我们对相关性展开计算, 而后打造带有注释的热图:corrs df.corr() figure ff.create_annotated_heatmap( zcorrs.values, xlist(corrs.columns), ylist(corrs.index), annotation_textcorrs.round(2).values, showscaleTrue)plot清单多得数不过来, 还存在几个主题, 运用它们我们能够轻易取得截然不同的样式, 比如说, 接下来在“space”主题里我们有一个比率图, 在另一个里面有一个展布图:我们还获得了3D图表面和气泡对于那些喜欢的人您甚至可以制作饼图在 Chart 中进行编辑笔记本上画这些图时, 图形右下方能看到个小链接, 显示“导出到 plot.ly”。单击该链接, 会被带到 Chart, 这儿能在绘图上修饰, 用于最终演示。这时能添加注释, 指定颜色, 还要把所有内容清理干净, 获得不错形象。之后能在线发布图形, 这样任何人借链接就能找到它。以下是我在Chart 中修改过的两个图表对于这里所提及的全部内容, 我们依旧未曾探寻到库的所有功能我提议您一并查阅文档, 从而获取更为令人惊叹的图形。of wind farms in ()结论对于沉没成本谬误而言, 其相当糟糕之处在意, 唯有当你退出此项工作之后, 才清楚自己究竟浪费了多少时日。所幸因我犯下长时间使用之错, 故你无需这般。在考虑绘制库时我们需要做一些事情· 单行代码图表快速探索· 子集/调查数据的交互元素· 可选择根据需要深入研究细节· 轻松定制以进行最终演示至当前, 于其中达成全部这些操作的最优之选是。借由 , 我们能够迅速开展可视化, 且凭借交互性助力我们更优地认识数据。此外, 容我们承认, 绘图理应属于数据科学里最为让人愉悦的部分之一在别的库中, 绘图成了一件繁杂之事, 然而在其中, 绘制一幅出色的图表就变得令人欢快在一段时间内, 关于我的, 与在其中的, 一个情节。已至2019年, 此刻应升级绘图库。之所以要升级, 是因其有助于在数据科学可视化里达成更高效率, 更具功能以及更美观的呈现效果。这份文本, 是从Will所著的《The Next Level of Data in》直接翻译而来的, 供作参考时使用标点。)