当前位置:首页 > 电源 > 功率器件
[导读]介绍在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。随意在评论中提供反馈。我相信,人们将有很多关于这一主题的问题和意见。如果我错过了什么或者有其他的选择了,让我知道。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭