www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 電源 > 功率器件
[導(dǎo)讀]介紹在Python世界中,有大量數(shù)據(jù)可視化的選項(xiàng).因?yàn)楦鞣N各樣,要知道什么時(shí)候使用哪個(gè)是非常困難的.本文包含一些較為流行的樣例,并說明如果使用其創(chuàng)建簡(jiǎn)單的條形圖.我會(huì)使用以

介紹

在Python世界中,有大量數(shù)據(jù)可視化的選項(xiàng).因?yàn)楦鞣N各樣,要知道什么時(shí)候使用哪個(gè)是非常困難的.本文包含一些較為流行的樣例,并說明如果使用其創(chuàng)建簡(jiǎn)單的條形圖.我會(huì)使用以下包/工具創(chuàng)建繪圖例子:

Pandas

Seaborn

ggplot

Bokeh

pygal

Plotly

在例子用,我將使用pandas操作數(shù)據(jù),并啟動(dòng)其可視化.在大多數(shù)情況下使用這些工具不需要pandas,但是我覺得pandas+可視化工具如此普遍,這是最好的起點(diǎn)。

Matplotlib怎么樣?

Matplotlib 是python可視化庫(kù)的祖父.它非常強(qiáng)大,但是太過復(fù)雜.你可以使用Matplotlib 做任何你需要做到的事情,但是并不容易弄明白.我不打算通過純Matplotlib 樣例講解,因?yàn)樵S多工具(尤其Pandas和Seaborn)是Matplotlib的thin wrappers.

對(duì)Matplotlib最大的抱怨是需要大量工作的到期望的圖表.在處理這些例子時(shí),我發(fā)現(xiàn)更容易獲得優(yōu)美的圖形,不需要大量大代碼.對(duì)于matplotlib冗余性的一個(gè)小例子,看一下這個(gè)ggplot后例子。

方法

我相信,只要人們開始閱讀這一點(diǎn),他們會(huì)指出更好的方式來使用這些工具。我的目標(biāo)不是建立在每個(gè)例子完全相同的圖形.我想在搜索解決方案大致相同的時(shí)間以大致相同的方式可視化數(shù)據(jù).

按這個(gè)過程,最大的挑戰(zhàn)是格式化x和y軸,使得在給定一些大標(biāo)簽時(shí)數(shù)據(jù)看起來合理.也許花一些時(shí)間弄清楚每個(gè)工具希望數(shù)據(jù)如何格式化.一旦弄明白這些部分,剩下的部分比較簡(jiǎn)單的.

另外一個(gè)需要考慮的電視,條形圖可能是制作圖標(biāo)類型最簡(jiǎn)單的一種.這些工具讓你能夠繪制更多類型的圖標(biāo).我的示例更注重于易格式化性而不是創(chuàng)新可視化例子,因?yàn)闃?biāo)簽,一些圖表占用了很大空間,所以我削減了,只是為了保證文章的長(zhǎng)度管理.最后我調(diào)整了圖像,因此任何模糊是縮放問題,并且不是實(shí)際輸出質(zhì)量.

最后,我接近使用其他工具替換Excel的心態(tài).我認(rèn)為我的例子更能說明報(bào)告,演講,郵件或者靜態(tài)網(wǎng)頁(yè)中的展示.如果你評(píng)估實(shí)時(shí)數(shù)據(jù)可視化或者通過其他機(jī)制共享的工具,那么部分工具提供了很多我沒有提到的功能.

數(shù)據(jù)集

在上篇文章中介紹了我們將要處理的數(shù)據(jù).數(shù)據(jù)集中包含125行項(xiàng)目,但我選擇關(guān)注前10以保證簡(jiǎn)單點(diǎn).你可以在這找到完整的數(shù)據(jù).

Pandas

我使用pandas DataFrame作為所有各種圖標(biāo)的出發(fā)點(diǎn).幸運(yùn)的是,pandas為我們提供了內(nèi)置的matplotlib層繪圖能力.將使用它作為基準(zhǔn).首先,導(dǎo)入模塊,并將數(shù)據(jù)讀入DataFrame.我們希望對(duì)數(shù)據(jù)進(jìn)行排序,并限制為前10項(xiàng).

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

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

對(duì)所有例子我們使用同樣的budget.以下是前5項(xiàng)目樣子:

 

 

現(xiàn)在,設(shè)置展示使用更好的默認(rèn)值,并創(chuàng)建一個(gè)條形圖:

pd.options.display.mpl_style = 'default'

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

title="MN Capital Budget - 2014",

legend=False)

使用detail列創(chuàng)建圖標(biāo)同時(shí)展示標(biāo)題并區(qū)屬圖例.這是將圖片存為png的額外代碼.

fig = budget_plot.get_figure()

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

這是圖片樣子(階段是為了文章長(zhǎng)度管理).

 

 

看起來基本不錯(cuò).理想情況下,我想多做一些y軸的格式化,但需要matplotlib 的處理.這是個(gè)完美有用的可視化,但是不能通過pandas做更多純粹的定制.

Seaborn

Seaborn是一個(gè)基于matplotlib的可視化庫(kù).旨在讓默認(rèn)的數(shù)據(jù)可視化更加悅目.同時(shí)讓復(fù)雜的圖表更簡(jiǎn)單的創(chuàng)建.它和pandas集成.我的例子不允許Seaborn 顯著差異.我喜歡Seaborn 的一個(gè)原因是各種各樣的內(nèi)置樣式,讓你快速更改調(diào)色板以看起來更加漂亮.因此,關(guān)于簡(jiǎn)單的圖表Seaborn沒有為我們做很多. 標(biāo)準(zhǔn)導(dǎo)入并讀入數(shù)據(jù):

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對(duì)x軸項(xiàng)目排序.這部分代碼設(shè)置排序,圖表風(fēng)格和條形圖顏色:

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旋轉(zhuǎn)x軸標(biāo)題.從外觀上來看,顯示非常不錯(cuò).理想情況下,我想格式化y軸刻度,但是在不引入matplotlib的plt.yticks的情況下,我不知道如果做到這一點(diǎn).

ggplot

ggplot類似于Seaborn,構(gòu)建于matplotlib,并且旨在以簡(jiǎn)單的方式提高matplotlib可視化的視覺吸引力.和Seaborn不同的是它是R中g(shù)gplot2的接口.鑒于這個(gè)目標(biāo),部分API不是python,但非常強(qiáng)大.我沒有用過R中的ggplot,所以有一個(gè)學(xué)習(xí)曲線.然后我可以開到ggplot的吸引力.此庫(kù)正在積極的發(fā)展,我希望它繼續(xù)發(fā)展并成熟起來,因?yàn)槲艺J(rèn)為這可能是一個(gè)非常強(qiáng)大的功能.為了弄清楚一些事情我也學(xué)習(xí)過幾次.在看代碼和做了一些google之后,我能明白大部分.來吧,導(dǎo)入模塊,讀取數(shù)據(jù):

import pandas as pd

from ggplot import *

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

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

現(xiàn)在我們通過串聯(lián)一些ggplot命令創(chuàng)建我們的圖表:

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來展示圖表.然而,弄清楚這點(diǎn)比較簡(jiǎn)單.在進(jìn)一步深入后,了解如何旋轉(zhuǎn)文本90度以及如何排序x軸標(biāo)簽.我發(fā)現(xiàn)最棒的功能是 scale_y_continous,使得標(biāo)簽好看很多.如果你想保存圖片,使用ggsave :

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

這是最終圖像.我知道有很多灰階.我可以上色,但是沒有時(shí)間.

 

 

Bokeh

Bokeh和之前3個(gè)庫(kù)都不一樣,不依賴與matplotlib,并且面向現(xiàn)代網(wǎng)頁(yè)瀏覽器生成可視化.它的目的是讓交互式網(wǎng)頁(yè)可視化,所以我的例子非常簡(jiǎn)單.導(dǎo)入模塊,讀取數(shù)據(jù):

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一個(gè)不同的方面是,我需要明確列出我們想要繪制的值.

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

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

現(xiàn)在我們可以繪制.這個(gè)代碼會(huì)讓瀏覽器展示包含圖表的HTML網(wǎng)頁(yè).如果有其他用途,我可以保存為png副本.

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

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

bar.show()

這是png圖片:

 

 

正如你所看到的,圖片非常干凈.我沒有找到更簡(jiǎn)單的方法,更容易的格式化y軸.Bokeh有去許多功能但是我沒有在這個(gè)例子中深入.

Pygal

Pygal用于創(chuàng)建svg圖表.如果安裝了正確依賴,同樣可以保存為png文件.對(duì)于易制作交互式圖標(biāo)svg文件是相當(dāng)有用的.我同樣發(fā)現(xiàn)創(chuàng)建獨(dú)特外觀和視覺吸引力的圖標(biāo)非常容易.和之前一樣,導(dǎo)入模塊,并讀取數(shù)據(jù):

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]

我們需要?jiǎng)?chuàng)建圖標(biāo)類型和設(shè)置一些基本屬性:

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

legend_at_bottom=True, human_readable=True,

title='MN Capital Budget - 2014')

值得注意的一點(diǎn)是human_readable,對(duì)于格式化數(shù)據(jù)做的非常好.現(xiàn)在我們需要加入數(shù)據(jù)到圖表中.這里和pandas整合不那么緊密,但是我發(fā)現(xiàn)直接處理這個(gè)小數(shù)據(jù)集.當(dāng)有大量的行,性能可能是一個(gè)問題.

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

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

現(xiàn)在渲染文件為svg 和png文件:

bar_chart.render_to_file('budget.svg')

bar_chart.render_to_png('budget.png')

 

 

我認(rèn)為svg表現(xiàn)非常好,我喜歡結(jié)果圖具有獨(dú)特,賞心悅目的風(fēng)格.我同樣發(fā)現(xiàn)很容易弄清楚可以做什么,不可以做什么.我鼓勵(lì)你下載svg文件,看看在你瀏覽器中圖片的互動(dòng)性.

Plot.ly

Plot.ly以分析和可視化的在線工具來區(qū)分的.有強(qiáng)大的API并且包含python的.瀏覽網(wǎng)站,你可以發(fā)現(xiàn)有非常豐富,交互式的圖片.得益于優(yōu)秀的文檔,創(chuàng)建條形圖相當(dāng)簡(jiǎn)單.你需要遵循文檔,獲取你API 密鑰設(shè)置.一旦你這樣做,所有工作看上去相當(dāng)完美.一個(gè)需要注意的是,你所做的一切都在網(wǎng)上發(fā)布,因此確保你對(duì)這點(diǎn)感到OK.有一個(gè)選項(xiàng)可以讓圖表私有,所以你需要設(shè)置.Plot.ly和pandas無(wú)縫整合.設(shè)置導(dǎo)入模塊,讀取數(shù)據(jù):

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]

設(shè)置數(shù)據(jù)和圖表類型.

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

)

最后,繪制數(shù)據(jù).這將打開一個(gè)瀏覽器,帶有你完成的繪圖.你可以使用 py.image.save_as保存本例副本.這是個(gè)很cool的功能.你得到豐富的基于網(wǎng)絡(luò)報(bào)告的交互,和保存本地副本用于嵌入文件的能力.

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')

 

 

檢查全交互式版本.你可以看到很多很棒的例子.箱圖很吸引人并具有高度交互性.因?yàn)槲臋n和pythonAPI,運(yùn)行非常簡(jiǎn)單,我喜歡最終產(chǎn)品.

總結(jié)

在python生態(tài)環(huán)境中繪制數(shù)據(jù)有兩面性.好的方面是有很多選擇.壞的方面是有很多選擇.嘗試弄清楚那個(gè)適合你,取決于你需要完成什么.在某種程度上,你需要弄清楚用的工具能不能工作.我沒有看到明顯贏家和輸家.下面是我一些想法:

pandas非常方便,但你必須愿意學(xué)習(xí)matplotlib定制。

Seaborn可以支持一些更復(fù)雜的可視化的方法,但仍需要matplotlib知識(shí)來調(diào)整。顏色方案是不錯(cuò)。

ggplot有很多的承諾,但經(jīng)過陣痛仍在繼續(xù)。

Bokeh 是一個(gè)強(qiáng)大的工具,如果你想建立自己的可視化服務(wù)器,但可能在簡(jiǎn)單場(chǎng)景有些大材小用。

pygal由于能夠產(chǎn)生互動(dòng)的SVG圖形和PNG文件是獨(dú)一無(wú)二的。它并不像基于matplotlib方案靈活。

Plotly產(chǎn)生互動(dòng)性最強(qiáng)的圖形。您可以離線保存,并創(chuàng)建非常豐富的基于網(wǎng)絡(luò)的可視化效果。

目前的情況是,我會(huì)繼續(xù)觀看ggplot圖像的進(jìn)步和使用pygal,在需要交互性的時(shí)候使用plotly。隨意在評(píng)論中提供反饋。我相信,人們將有很多關(guān)于這一主題的問題和意見。如果我錯(cuò)過了什么或者有其他的選擇了,讓我知道。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉