漲姿勢(shì),Python 畫圖竟然還能這么整
↑?關(guān)注 + 星標(biāo)?,每天學(xué)Python新技能
后臺(tái)回復(fù)【大禮包】送你Python自學(xué)大禮包 大家好,我是龍哥!
今天來聊聊 Pandas 的幾種繪圖方式。
餅圖
在畫餅圖的時(shí)候可以使用DataFrame.plot.pie()或Series.plot.pie()創(chuàng)建餅圖。如果您的數(shù)據(jù)包含任何NaN,它們將被自動(dòng)填充為0, 如果數(shù)據(jù)中有任何負(fù)值,將引發(fā)ValueError。?畫餅圖詳細(xì)代碼如下:
import?pandas?as?pd
import?numpy?as?np
import?matplotlib.pyplot?as?plt
def?craw_pie():
????series?=?pd.Series(3?*?np.random.rand(4),?index=["1",?"2",?"3",?"4"],?name="series")
????series.plot.pie(figsize=(6,?6));
????plt.show()
if?__name__?==?'__main__':
????craw_pie()
顯示結(jié)果如下:

對(duì)于餅狀圖,最好使用正方形圖形,即圖形長(zhǎng)寬比為1。您可以創(chuàng)建寬度和高度相等的圖形,或者通過在返回的axes對(duì)象上調(diào)用ax.set_aspect('equal')來繪制后強(qiáng)制寬高比相等。
注意: 帶DataFrame的餅圖要求您通過y參數(shù)指定目標(biāo)列,或者subplot =True。當(dāng)指定y時(shí),將繪制選定列的餅圖。如果指定subplot =True,則將每個(gè)列的餅圖繪制為子圖。默認(rèn)情況下,將在每個(gè)餅圖中繪制一個(gè)圖例; 指定legend=False來隱藏它。
例如:將每個(gè)列的餅圖繪制為子圖實(shí)例如下:
import?pandas?as?pd
import?numpy?as?np
import?matplotlib.pyplot?as?plt
def?draw_pie1():
????df?=?pd.DataFrame(
????????3?*?np.random.rand(4,?2),?index=["a",?"b",?"c",?"d"],?columns=["x",?"y"])
????df.plot.pie(subplots=True,?figsize=(8,?4))
????plt.show()
if?__name__?==?'__main__':
????draw_pie1()
顯示結(jié)果圖如下:

根據(jù)上圖顯示可知,加了subplots=True參數(shù)后,圖形顯示的顏色代表在長(zhǎng)方形圖片中已展示出來。
如果要隱藏,加legend=False即可隱藏,實(shí)例如下:
import?pandas?as?pd
import?numpy?as?np
import?matplotlib.pyplot?as?plt
def?draw_pie1():
????df?=?pd.DataFrame(
????????3?*?np.random.rand(4,?2),?index=["a",?"b",?"c",?"d"],?columns=["x",?"y"])
????df.plot.pie(subplots=True,?figsize=(8,?4),?legend=False)
????plt.show()
if?__name__?==?'__main__':
????draw_pie1()
結(jié)果圖如下:

咱們?cè)诶L畫的時(shí)候也可以可以使用標(biāo)簽和顏色關(guān)鍵字來指定每個(gè)楔形的標(biāo)簽和顏色,例如:
def?draw_pie2():
????series?=?pd.Series(3?*?np.random.rand(4),?index=["1",?"2",?"3",?"4"],?name="series")
????series.plot.pie(
????????labels=["A",?"B",?"C",?"D"],
????????colors=["r",?"g",?"b",?"c"],
????????autopct="%.2f",
????????fontsize=20,
????????figsize=(6,?6),)
????plt.show()
if?__name__?==?'__main__':
????draw_pie2()
展示結(jié)果如下:

如果傳遞的值的總和小于1,matplotlib會(huì)畫一個(gè)半圓。
實(shí)例如下:
def?draw_pie3():
????series?=?pd.Series([0.1]?*?4,?index=["a",?"b",?"c",?"d"],?name="series2")
????series.plot.pie(figsize=(6,?6))
????plt.show()
if?__name__?==?'__main__':
????draw_pie3()

散射矩陣圖
你可以使用 pandas.plotting 繪圖板中的 scatter_matrix方法創(chuàng)建一個(gè)散點(diǎn)圖矩陣,實(shí)例如下:
import?pandas?as?pd
import?numpy?as?np
import?matplotlib.pyplot?as?plt
from?pandas.plotting?import?scatter_matrix
def?draw_pie4():
????df?=?pd.DataFrame(np.random.randn(1000,?4),?columns=["a",?"b",?"c",?"d"])
????scatter_matrix(df,?alpha=0.2,?figsize=(6,?6),?diagonal="kde")
????plt.show()
if?__name__?==?'__main__':
????draw_pie4()
顯示結(jié)果圖如下:
總結(jié)
今天的文章就到這里啦,希望今天的文章對(duì)大家有幫助!更多關(guān)于 Pandas 繪制圖形的方法咱們下集見分曉,希望自己進(jìn)步的同時(shí)也對(duì)大家有更大的用處,咱們下期見!
推薦閱讀
