Pandas內置繪圖大全

公衆號:尤而小屋
作者:Peter
編輯:Peter

大家好,我是Peter~

之前寫過很多關於Pandas的文章都是介紹如何使用Pandas來處理數據,這的確是它的強項。

其實,Pandas還有一個內置的功能:繪圖。你沒有看錯:Pandas自身就是可以繪圖的。本文詳細介紹基於Pandas的快速繪圖方法。

Pandas內置繪圖

參數

下面是常見的參數及解釋,詳細的請參考官網:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.html

DataFrame.plot(x=None, y=None,   # 指數據框列的標籤或位置參數
               kind='line',  # 圖的類型:line bar barh kde area scatter hist box等
               ax=None,  # 座標軸
               subplots=False,   # 是否繪製子圖 
               sharex=None,  # 是否共享xy軸
               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,   # 設置x、y軸刻度值,序列形式(比如列表)
               yticks=None, 
               xlim=None,   # 設置座標軸的範圍,列表或元組形式
               ylim=None, 
               rot=None,  # 設置軸標籤(軸刻度)的顯示旋轉度數
               xerr=None,  # 誤差
               secondary_y=False,    # 開啓第二y軸(右y軸)
               sort_columns=False,   # 以字母表順序繪製各列,默認使用前列順序
               **kwds)

模擬數據

本文中主要使用的一份模擬數據:根據numpy庫模擬生成的

折線圖

繪製最基礎的圖形:折線圖

基礎折線圖

禁用圖例

就是上圖右上角的col1、col2、col3

# 禁用圖例Legend

df.plot(legend=False,kind="line")
plt.show

調整兩個軸的名稱

# 設置兩個軸的名稱

df.plot(kind="line",xlabel="x_new",ylabel="y_new")
plt.show

柱狀圖

基礎柱狀圖

# 寫法1
df.col1.plot(kind="bar",title="use pandas to make bar")
# 寫法2
df["col1"].plot(kind="bar",title="use pandas to make bar")
# 寫法3
df.col1.plot.bar(title="use pandas to make bar")

plt.show()

多元素柱狀圖

堆疊柱狀圖

水平柱狀圖

當然,也可以是堆疊的形式:

散點圖

基礎散點圖

改變大小和顏色

df.plot(kind="scatter", # 指定類型
        x="col1", y="col3",  # 指定兩個軸
        s=df["col2"] *500,  # 點的大小
        c="r"  # 點的顏色
       )  
plt.show()

帶顏色棒的散點圖

餅圖

針對Series

爲了繪製餅圖,模擬了一份新數據:

series.plot(kind="pie",figsize=(6,6))
plt.show()

針對DataFrame

同樣的,再繪製一份數據:

箱型圖

基礎箱型圖

自定義箱型圖

# 自定義顏色
color = {"boxes": "DarkGreen",
         "whiskers": "DarkOrange",
         "medians": "DarkBlue",
         "caps": "Gray"}

df.plot.box(color=color, sym="r+")
plt.show()

水平箱型圖

# 自定義顏色
color = {"boxes": "DarkGreen",
         "whiskers": "DarkOrange",
         "medians": "DarkBlue",
         "caps": "Gray"}

df.plot.box(color=color, 
            vert=False,  # 關鍵參數
            sym="r+")
plt.show()

使用boxplot繪箱型圖

參數是同樣適用的:

蜂窩圖

爲了繪製不同的蜂窩圖,模擬了一份新數據:

基礎蜂窩圖

改進版蜂窩圖

df1.plot(
    kind="hexbin",
    x="A",
    y="B",
    C="C",  # 顏色深度的表示
    reduce_C_function=np.mean, # 指定不同聚合參數:mean/max/min/sum/std
    gridsize=30)
plt.show()

直方圖

# 寫法1
df.plot(kind="hist",alpha=0.5)
# 寫法2
df.plot.hist(alpha=0.5)

plt.show()

密度圖

使用 Series.plot.kde() 和 DataFrame.plot.kde() 可以畫出密度圖:

1、針對DataFrame的密度圖

2、針對Series的密度圖

面積圖

多子圖

繪製子圖主要的參數:

  • subplots: 默認False, 如果希望每列繪製子圖, 則賦值爲True
  • layout: 子圖的佈局, 即畫布被橫豎分爲幾塊, 如:(2,3)表示2行3列
  • figsize: 整個畫布大小
df.plot(subplots=True,
        layout=(1,3),  # 1行3列
        figsize=(15,6),
        kind="bar"
       )
plt.show()

開啓共享y軸的參數:

df.plot(subplots=True,
        layout=(1,3),  # 1行3列
        figsize=(15,6),
        kind="bar",
        sharey=True  # 開啓共享y軸
       )
plt.show()

散點矩陣圖

# 單圖導入
from pandas.plotting import scatter_matrix

scatter_matrix(df1,alpha=0.5,figsize=(14,6),diagonal="kde")
plt.show()

平行分類圖

爲了繪製平行分類圖,我們導入著名的iris數據集:

其中:屬性Name就是我們進行分類的數據字段

# 導圖模塊
from pandas.plotting import parallel_coordinates

parallel_coordinates(
    iris, # 數據
    class_column="Name",  # 分類名稱所用字段
    color=('#556270', '#4ECDC4', '#C7F464') # 顏色設置
)

plt.show()

總結

我們總結下Pandas內置繪圖的特點:

  • 代碼量少,最大的優點
  • 快速簡潔,基本繪圖可以滿足
  • 靜態化,非動態可視化
  • 圖片質量一般
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章