您的位置 首页 5G

Python的可视化东西概述

介绍在Python世界中,有大量数据可视化的选项.因为各种各样,要知道什么时候使用哪个是非常困难的.本文包含一些较为流行的样例,并说明如果使用其创建简单

介绍

在Python国际中,有许多数据可视化的选项.因为各式各样,要知道什么时分运用哪个是十分困难的.本文包括一些较为盛行的样例,并阐明假如运用其创立简略的条形图.我会运用以下包/东西创立绘图比如:

Pandas

Seaborn

ggplot

Bokeh

pygal

Plotly

在比如用,我将运用pandas操作数据,并发动其可视化.在大多数状况下运用这些东西不需求pandas,可是我觉得pandas+可视化东西如此遍及,这是最好的起点。

Matplotlib怎么样?

Matplotlib 是python可视化库的祖父.它十分强壮,可是过分杂乱.你能够运用Matplotlib 做任何你需求做到的作业,可是并不简略弄理解.我不计划通过纯Matplotlib 样例解说,因为许多东西(特别Pandas和Seaborn)是Matplotlib的thin wrappers.

对Matplotlib最大的诉苦是需求许多作业的到期望的图表.在处理这些比如时,我发现更简略取得美丽的图形,不需求许多大代码.关于matplotlib冗余性的一个小比如,看一下这个ggplot后比如。

办法

我信任,只需人们开端阅览这一点,他们会指出更好的办法来运用这些东西。我的方针不是树立在每个比如完全相同的图形.我想在查找解决计划大致相同的时刻以大致相同的办法可视化数据.

按这个进程,最大的应战是格局化x和y轴,使得在给定一些大标签时数据看起来合理.或许花一些时刻弄清楚每个东西期望数据怎么格局化.一旦弄理解这些部分,剩余的部分比较简略的.

别的一个需求考虑的电视,条形图可能是制造图标类型最简略的一种.这些东西让你能够制造更多类型的图标.我的示例更注重于易格局化性而不是立异可视化比如,因为标签,一些图表占用了很大空间,所以我削减了,仅仅为了保证文章的长度办理.终究我调整了图画,因而任何含糊是缩放问题,而且不是实践输出质量.

终究,我挨近运用其他东西替换Excel的心态.我以为我的比如更能阐明陈述,讲演,邮件或许静态网页中的展现.假如你评价实时数据可视化或许通过其他机制同享的东西,那么部分东西供给了许多我没有说到的功用.

数据集

在上篇文章中介绍了咱们即将处理的数据.数据会集包括125行项目,但我挑选重视前10以保证简略点.你能够在这找到完好的数据.

Pandas

我运用pandas DataFrame作为一切各种图标的起点.走运的是,pandas为咱们供给了内置的matplotlib层绘图才能.将运用它作为基准.首要,导入模块,并将数据读入DataFrame.咱们期望对数据进行排序,并限制为前10项.

budget = pd.read_csv(mn-budget-detail-2014.csv)

budget = budget.sort(‘amount’,ascending=False)[:10]

对一切比如咱们运用相同的budget.以下是前5项目姿态:

现在,设置展现运用更好的默许值,并创立一个条形图:

pd.options.display.mpl_style = ‘default’

budget_plot = budget.plot(kind=bar,x=budget[detail],

title=MN Capital Budget – 2014,

legend=False)

运用detail列创立图标一起展现标题并区属图例.这是将图片存为png的额定代码.

fig = budget_plot.get_figure()

fig.savefig(2014-mn-capital-budget.png)

这是图片姿态(阶段是为了文章长度办理).

看起来根本不错.抱负状况下,我想多做一些y轴的格局化,但需求matplotlib 的处理.这是个完美有用的可视化,可是不能通过pandas做更多朴实的定制.

Seaborn

Seaborn是一个根据matplotlib的可视化库.旨在让默许的数据可视化愈加顺眼.一起让杂乱的图表更简略的创立.它和pandas集成.我的比如不允许Seaborn 显着差异.我喜爱Seaborn 的一个原因是各式各样的内置款式,让你快速更改调色板以看起来愈加美丽.因而,关于简略的图表Seaborn没有为咱们做许多. 规范导入并读入数据:

import pandas as pd

import seaborn as sns

import matplotlib.pyplot as plt

budget = pd.read_csv(mn-budget-detail-2014.csv)

budget = budget.sort(‘amount’,ascending=False)[:>10]

运用x_order对x轴项目排序.这部分代码设置排序,图表风格和条形图色彩:

sns.set_style(darkgrid)

bar_plot = sns.barplot(x=budget[detail],y=budget[amount],

palette=muted,

x_order=budget[detail].tolist())

plt.xticks(rotation=>90)

plt.show()

如你所见,为了阅览我不得不运用matplotlib旋转x轴标题.从外观上来看,显现十分不错.抱负状况下,我想格局化y轴刻度,可是在不引进matplotlib的plt.yticks的状况下,我不知道假如做到这一点.

ggplot

ggplot类似于Seaborn,构建于matplotlib,而且旨在以简略的办法前进matplotlib可视化的视觉吸引力.和Seaborn不同的是它是R中ggplot2的接口.鉴于这个方针,部分API不是python,但十分强壮.我没有用过R中的ggplot,所以有一个学习曲线.然后我能够开到ggplot的吸引力.此库正在活跃的开展,我期望它持续开展并成熟起来,因为我以为这可能是一个十分强壮的功用.为了弄清楚一些作业我也学习过几回.在看代码和做了一些google之后,我能理解大部分.来吧,导入模块,读取数据:

import pandas as pd

from ggplot import *

budget = pd.read_csv(mn-budget-detail-2014.csv)

budget = budget.sort(‘amount’,ascending=False)[:>10]

现在咱们通过串联一些ggplot指令创立咱们的图表:

p = ggplot(budget, aes(x=detail,y=amount)) +

geom_bar(stat=bar, labels=budget[detail].tolist()) +

ggtitle(MN Capital Budget – 2014) +

xlab(Spending Detail) +

ylab(Amount) + scale_y_continuous(labels=’millions’) +

theme(axis_text_x=element_text(angle=>90))

print p

这好像有些古怪,特别适用print p来展现图表.可是,弄清楚这点比较简略.在进一步深化后,了解怎么旋转文本90度以及怎么排序x轴标签.我发现最棒的功用是 scale_y_continous,使得标签美观许多.假如你想保存图片,运用ggsave :

ggsave(p, mn-budget-capital-ggplot.png)

这是终究图画.我知道有许多灰阶.我能够上色,可是没有时刻.

Bokeh

Bokeh和之前3个库都不相同,不依靠与matplotlib,而且面向现代网页阅读器生成可视化.它的意图是让交互式网页可视化,所以我的比如十分简略.导入模块,读取数据:

import pandas as pd

from bokeh.charts import Bar

budget = pd.read_csv(mn-budget-detail-2014.csv)

budget = budget.sort(‘amount’,ascending=False)[:>10]

Bokeh一个不同的方面是,我需求清晰列出咱们想要制造的值.

details = budget[detail].values.tolist()

amount = >list(budget[amount].astype(>float).values)

现在咱们能够制造.这个代码会让阅读器展现包括图表的HTML网页.假如有其他用处,我能够保存为png副本.

bar = Bar(amount, details, filename=bar.html)

bar.title(MN Capital Budget – 2014).xlabel(Detail).ylabel(Amount)

bar.show()

这是png图片:

正如你所看到的,图片十分洁净.我没有找到更简略的办法,更简略的格局化y轴.Bokeh有去许多功用可是我没有在这个比如中深化.

Pygal

Pygal用于创立svg图表.假如安装了正确依靠,相同能够保存为png文件.关于易制造交互式图标svg文件是适当有用的.我相同发现创立共同外观和视觉吸引力的图标十分简略.和之前相同,导入模块,并读取数据:

import pandas as pd

import pygal

from pygal.style import LightStyle

budget = pd.read_csv(mn-budget-detail-2014.csv)

budget = budget.sort(‘amount’,ascending=False)[:>10]

咱们需求创立图标类型和设置一些根本特点:

bar_chart = pygal.Bar(style=LightStyle, width=>800, height=>600,

legend_at_bottom=True, human_readable=True,

title=’MN Capital Budget – 2014′)

值得留意的一点是human_readable,关于格局化数据做的十分好.现在咱们需求参加数据到图表中.这儿和pandas整合不那么严密,可是我发现直接处理这个小数据集.当有许多的行,功用可能是一个问题.

for index, row >in budget.iterrows():

bar_chart.add(row[detail], row[amount])、

现在烘托文件为svg 和png文件:

bar_chart.render_to_file(‘budget.svg’)

bar_chart.render_to_png(‘budget.png’)

我以为svg体现十分好,我喜爱成果图具有共同,赏心顺眼的风格.我相同发现很简略弄清楚能够做什么,不能够做什么.我鼓舞你下载svg文件,看看在你阅读器中图片的互动性.

Plot.ly

Plot.ly以剖析和可视化的在线东西来区别的.有强壮的API而且包括python的.阅读网站,你能够发现有十分丰厚,交互式的图片.得益于优异的文档,创立条形图适当简略.你需求遵从文档,获取你API 密钥设置.一旦你这样做,一切作业看上去适当完美.一个需求留意的是,你所做的一切都在网上发布,因而保证你对这点感到OK.有一个选项能够让图表私有,所以你需求设置.Plot.ly和pandas无缝整合.设置导入模块,读取数据:

import plotly.plotly as py

import pandas as pd

from plotly.graph_objs import *

budget=pd.read_csv(“mn-budget-detail-2014.csv”)

budget.sort(‘amount’,ascending=False,inplace=True)

budget = budget[:>10]

设置数据和图表类型.

data = Data([

Bar(

x=budget[detail],

y=budget[amount]

)

])

我还决议增加一些额定布局信息.

layout = Layout(

title=’2014 MN Capital Budget’,

font=Font(

family=’Raleway, sans-serif’

),

showlegend=False,

xaxis=XAxis(

tickangle=->45

),

bargap=>0.05

)

终究,制造数据.这将翻开一个阅读器,带有你完结的绘图.你能够运用 py.image.save_as保存本例副本.这是个很cool的功用.你得到丰厚的根据网络陈述的交互,和保存本地副本用于嵌入文件的才能.

fig = Figure(data=data, layout=layout)

plot_url = py.plot(data,filename=’MN Capital Budget – 2014′)

py.image.save_as(fig, ‘mn-14-budget.png’)

查看全交互式版别.你能够看到许多很棒的比如.箱图很吸引人并具有高度交互性.因为文档和pythonAPI,运转十分简略,我喜爱终究产品.

总结

在python生态环境中制造数据有两面性.好的方面是有许多挑选.坏的方面是有许多挑选.测验弄清楚那个合适你,取决于你需求完结什么.在某种程度上,你需求弄清楚用的东西能不能作业.我没有看到显着赢家和输家.下面是我一些主意:

pandas十分便利,但你有必要乐意学习matplotlib定制。

Seaborn能够支撑一些更杂乱的可视化的办法,但仍需求matplotlib常识来调整。色彩计划是不错。

ggplot有许多的许诺,但通过阵痛仍在持续。

Bokeh 是一个强壮的东西,假如你想树立自己的可视化服务器,但可能在简略场景有些大材小用。

pygal因为能够发生互动的SVG图形和PNG文件是绝无仅有的。它并不像根据matplotlib计划灵敏。

Plotly发生互动性最强的图形。您能够离线保存,并创立十分丰厚的根据网络的可视化作用。

现在的状况是,我会持续观看ggplot图画的前进和运用pygal,在需求交互性的时分运用plotly。随意在谈论中供给反应。我信任,人们将有许多关于这一主题的问题和定见。假如我错过了什么或许有其他的挑选了,让我知道。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/155556.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部