簡體   English   中英

Matplotlib pandas dataframe散點類型子圖表根據同一列

[英]Matplotlib pandas dataframe scatter type subplots according to the same column

假設我有一個包含100行40列的數據框,其中40列表示散點圖的Y軸值。 對於39個散點圖,我想繪制第40列,第1列,第40列,第2列,第40列,第3列,依此類推,直到第39列的第40列。產生這種子圖的方法,而無需手動進行?

例如(使用較小的數據框),嘗試將子列中第1列的函數中的第3列散布,而第2列的函數中的第3列散布。

df = pd.DataFrame({'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]})
df.plot(x=["AAA", "BBB"], y=["CCC"], kind="scatter", subplots=True, sharey=True)

一種方法是在外部創建子圖並在列名上循環,為每個子圖創建一個圖。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]})

fig, axes = plt.subplots(1,len(df.columns.values)-1, sharey=True)

for i, col in enumerate(df.columns.values[:-1]):
    df.plot(x=[col], y=["CCC"], kind="scatter", ax=axes[i])

plt.show()


在pandas 0.19中可能有效的另一種方法是使用subplots參數。 根據文檔

子圖:布爾值,默認為False
為每列分別創建子圖

我對此進行了解釋,以便以下內容可以工作,但是,我無法對其進行測試。

 import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame({'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]}) df.plot(x=df.columns.values[:-1], y=["CCC" for _ in df.columns.values[:-1]], kind="scatter", subplots=True, sharey=True) plt.show() 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM