<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
使用pandas.DataFrame的plot方法繪製影象會按照資料的每一列繪製一條曲線,預設按照列columns的名稱在適當的位置展示圖例,比matplotlib繪製節省時間,且DataFrame格式的資料更規範,方便向量化及計算。
DataFrame.plot( )函數:
DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False, sharex=None, sharey=False, layout=None, figsize=None, use_index=True, title=None, grid=None, legend=True, style=None, logx=False, logy=False, loglog=False, xticks=None, yticks=None, xlim=None, ylim=None, rot=None, fontsize=None, colormap=None, position=0.5, table=False, yerr=None, xerr=None, stacked=True/False, sort_columns=False, secondary_y=False, mark_right=True, **kwds)
1. 基本用法
ts = pd.Series(np.random.randn(1000), index=pd.date_range("1/1/2000", periods=1000)) ts = ts.cumsum() ts.plot();
2. 展示多列資料
df = pd.DataFrame(np.random.randn(1000, 4), index=pd.date_range("1/1/2000", periods=1000), columns=list("ABCD")) df = df.cumsum() df.plot()
3. 使用x和y引數,繪製一列與另一列的對比
df3 = pd.DataFrame(np.random.randn(1000, 2), columns=["B", "C"]).cumsum() df3["A"] = pd.Series(list(range(1000))) df3.plot(x="A", y="B")
4. secondary_y引數,設定第二Y軸及圖例位置
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD')) df = df.cumsum() print(df) # 圖1:其中A列用左Y軸標註,B列用右Y軸標註,二者共用一個X軸 df.A.plot() # 對A列作圖,同理可對行做圖 df.B.plot(secondary_y=True) # 設定第二個y軸(右y軸) # 圖2 ax = df.plot(secondary_y=['A', 'B']) # 定義column A B使用右Y軸。 # ax(axes)可以理解為子圖,也可以理解成對黑板進行切分,每一個板塊就是一個axes ax.set_ylabel('CD scale') # 主y軸標籤 ax.right_ax.set_ylabel('AB scale') # 第二y軸標籤 ax.legend(loc='upper left') # 設定圖例的位置 ax.right_ax.legend(loc='upper right') # 設定第二圖例的位置
5. x_compat引數,X軸為時間刻度的良好展示
ts = pd.Series(np.random.randn(1000), index=pd.date_range("1/1/2000", periods=1000)) ts = ts.cumsum() ts.plot(x_compat=True)
6. color引數,設定多組圖形的顏色
df = pd.DataFrame(np.random.randn(1000, 4), index=pd.date_range('1/1/2000', periods=1000), columns=list('ABCD')).cumsum() df.A.plot(color='red') df.B.plot(color='blue') df.C.plot(color='yellow')
DataFrame.plot.bar() 或者 DataFrame.plot(kind=‘bar’)
1. 基本用法
df2 = pd.DataFrame(np.random.rand(10, 4), columns=["a", "b", "c", "d"]) df2.plot.bar()
2. 引數stacked=True,生成堆積條形圖
df2.plot.bar(stacked=True)
3. 使用barh,生成水平條形圖
df2.plot.barh()
4. 使用rot引數,設定軸刻度的顯示旋轉度數
df2.plot.bar(rot=0) # 0表示水平顯示
1. 基本使用
df3 = pd.DataFrame( { "a": np.random.randn(1000) + 1, "b": np.random.randn(1000), "c": np.random.randn(1000) - 1, }, columns=["a", "b", "c"], ) # alpha設定透明度 df3.plot.hist(alpha=0.5) # 設定座標軸顯示負號 plt.rcParams['axes.unicode_minus']=False
2. 直方圖可以使用堆疊,stacked=True。可以使用引數 bins 更改素材箱大小
df3.plot.hist(alpha=0.5,stacked=True, bins=20)
3. 可以使用引數 by 指定關鍵字來繪製分組直方圖
data = pd.Series(np.random.randn(1000)) data.hist(by=np.random.randint(0, 4, 1000), figsize=(6, 4))
箱型圖,用來視覺化每列中值的分佈
.1. 基本使用
範例:這裡有一個箱形圖,代表對[0,1]上的均勻隨機變數的10個觀察結果進行的五次試驗。
df = pd.DataFrame(np.random.rand(10, 5), columns=["A", "B", "C", "D", "E"]) df.plot.box();
2. 箱型圖可以通過引數 color 進行著色
color是dict型別,包含的鍵分別是 boxes, whiskers, medians and caps
color = { "boxes": "DarkGreen", "whiskers": "DarkOrange", "medians": "DarkBlue", "caps": "Gray", } df.plot.box(color=color, sym="r+")
3. 可以使用引數 vert=False,指定水平方向顯示,預設為True表示垂直顯示
df.plot.box(vert=False)
4. 可以使用boxplot()方法,繪製帶有網格的箱型圖
df = pd.DataFrame(np.random.rand(10, 5)) bp = df.boxplot()
5. 可以使用引數 by 指定關鍵字來繪製分組箱型圖
df = pd.DataFrame(np.random.rand(10, 2), columns=["Col1", "Col2"]) df["X"] = pd.Series(["A", "A", "A", "A", "A", "B", "B", "B", "B", "B"]) bp = df.boxplot(by="X")
6. 可以使用多個列進行分組
df = pd.DataFrame(np.random.rand(10, 3), columns=["Col1", "Col2", "Col3"]) df["X"] = pd.Series(["A", "A", "A", "A", "A", "B", "B", "B", "B", "B"]) df["Y"] = pd.Series(["A", "B", "A", "B", "A", "B", "A", "B", "A", "B"]) bp = df.boxplot(column=["Col1", "Col2"], by=["X", "Y"])
預設情況下,區域圖為堆疊。要生成區域圖,每列必須全部為正值或全部為負值。
1. 基本使用
df = pd.DataFrame(np.random.rand(10, 4), columns=["a", "b", "c", "d"]) df.plot.area()
散點圖需要x和y軸的數位列。 這些可以由x和y關鍵字指定。
1. 基本使用
df = pd.DataFrame(np.random.rand(50, 4), columns=["a", "b", "c", "d"]) df["species"] = pd.Categorical( ["setosa"] * 20 + ["versicolor"] * 20 + ["virginica"] * 10 ) df.plot.scatter(x="a", y="b")
2. 可以使用 引數 ax 和 label 設定多組資料
ax = df.plot.scatter(x="a", y="b", color="DarkBlue", label="Group 1") df.plot.scatter(x="c", y="d", color="DarkGreen", label="Group 2", ax=ax)
3. 使用引數 c 可以作為列的名稱來為每個點提供顏色,引數s可以指定散點大小
df.plot.scatter(x="a", y="b", c="c", s=50)
4. 如果將一個分類列傳遞給c,那麼將產生一個離散的顏色條
df.plot.scatter(x="a", y="b", c="species", cmap="viridis", s=50)
5. 可以使用DataFrame的一列值作為散點的大小
df.plot.scatter(x="a", y="b", s=df["c"] * 200)
如果資料過於密集而無法單獨繪製每個點,則 蜂巢圖可能是散點圖的有用替代方法。
df = pd.DataFrame(np.random.randn(1000, 2), columns=["a", "b"]) df["b"] = df["b"] + np.arange(1000) df.plot.hexbin(x="a", y="b", gridsize=25)
如果您的資料包含任何NaN,則它們將自動填充為0。 如果資料中有任何負數,則會引發ValueError
1. 基本使用
series = pd.Series(3 * np.random.rand(4), index=["a", "b", "c", "d"], name="series") series.plot.pie(figsize=(6, 6))
2. 如果指定subplot =True,則將每個列的餅圖繪製為子圖。 預設情況下,每個餅圖中都會繪製一個圖例; 指定legend=False隱藏它。
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))
3. autopct 顯示所佔總數的百分比
series.plot.pie( labels=["AA", "BB", "CC", "DD"], colors=["r", "g", "b", "c"], autopct="%.2f", fontsize=20, figsize=(6, 6), )
df = pd.DataFrame(np.random.rand(5, 3), columns=["a", "b", "c"]) df.plot.bar(title='中文標題測試',rot=0) # 預設不支援中文 ---修改RC引數,指定字型 plt.rcParams['font.sans-serif'] = 'SimHei'
df3 = pd.DataFrame( { "a": np.random.randn(1000) + 1, "b": np.random.randn(1000), "c": np.random.randn(1000) - 1, }, columns=["a", "b", "c"], ) df3.plot.hist(alpha=0.5) # 設定座標軸顯示負號 plt.rcParams['axes.unicode_minus']=False
範例1:使用與原始資料的標準偏繪製組均值
ix3 = pd.MultiIndex.from_arrays([['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'], ['foo', 'foo', 'bar', 'bar', 'foo', 'foo', 'bar', 'bar']], names=['letter', 'word']) df3 = pd.DataFrame({'data1': [3, 2, 4, 3, 2, 4, 3, 2], 'data2': [6, 5, 7, 5, 4, 5, 6, 5]}, index=ix3) # 分組 gp3 = df3.groupby(level=('letter', 'word')) means = gp3.mean() errors = gp3.std() means.plot.bar(yerr=errors,rot=0)
範例2:使用非對稱誤差線繪製最小/最大範圍
mins = gp3.min() maxs = gp3.max() errors = [[means[c] - mins[c], maxs[c] - means[c]] for c in df3.columns] means.plot.bar(yerr=errors,capsize=4, rot=0)
df = pd.DataFrame(np.random.randn(1000, 4), index=pd.date_range("1/1/2000", periods=1000), columns=list("ABCD")) df = df.cumsum() df.plot(subplots=True, layout=(2, 3), figsize=(6, 6), sharex=False)
使用 table=True,繪製表格。圖下新增表
fig, ax = plt.subplots(1, 1, figsize=(7, 6.5)) df = pd.DataFrame(np.random.rand(5, 3), columns=["a", "b", "c"]) ax.xaxis.tick_top() # 在上方展示x軸 df.plot(table=True, ax=ax)
在繪製大量列時,一個潛在的問題是,由於預設顏色的重複,很難區分某些序列。 為了解決這個問題,DataFrame繪圖支援使用colormap引數,該引數接受Matplotlib的colormap或一個字串,該字串是在Matplotlib中註冊的一個colormap的名稱。 在這裡可以看到預設matplotlib顏色對映的視覺化。
df = pd.DataFrame(np.random.randn(1000, 10), index=pd.date_range("1/1/2000", periods=1000)) df = df.cumsum() df.plot(colormap="cubehelix")
參考文章:https://www.jb51.net/article/188648.htm
到此這篇關於pandas plot各種繪圖的文章就介紹到這了,更多相關pandas plot各種繪圖內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45