簡體   English   中英

在一張圖中繪制多個時間序列列

[英]Plot many time-series columns in one graph

我有一個大約有 100 列的大 data.frame,並嘗試在一個圖中繪制所有時間序列。 有沒有一種簡單的方法來處理它,而無需手動指定每個 y 軸?

這將是以下時間序列的簡單示例: 02K W、03K W 和 04K W

import pandas as pd
import matplotlib.pyplot as plt

df1 = pd.DataFrame({
    'Date':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05'],
    'index':[0, 1, 2, 3, 4], 
    '02K W':[3.5, 0.1, 3, 'nan', 0.2], 
    '03K W':[4.2, 5.2, 2.5, 3.0, 0.6], 
    '04K W':[1.5, 2.6, 8.2, 4.2, 5.3]}) 

df1['Date'] = pd.to_datetime(df1['Date'])
df1 = df1.set_index('index')

到目前為止,我手動指定了所有 y 軸來繪制單個時間序列。

plt.plot(df1['Date'], df1['02K W'])
plt.plot(df1['Date'], df1['03K W'])
plt.plot(df1['Date'], df1['04K W'])

有沒有更優雅的方法來指定繪圖的相關列? 非常感謝您的建議:)

有沒有更優雅的方法來指定繪圖的相關列?

使用DataFrame.plotDate作為索引並按所需columns過濾:

columns = ['02K W', '03K W', '04K W']
df1.set_index('Date')[columns].plot()

請注意,您的示例數據中有一個字符串'nan' 如果這在您的真實數據中是正確的,您應該將其轉換為真實的np.nan ,例如,使用pd.to_numericDataFrame.replace

import pandas as pd import matplotlib.pyplot as plt df1 = pd.DataFrame({ 'Date':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05'], 'index':[0, 1, 2, 3, 4], '02K W':[3.5, 0.1, 3, 'nan', 0.2], '03K W':[4.2, 5.2, 2.5, 3.0, 0.6], '04K W':[1.5, 2.6, 8.2, 4.2, 5.3]}) df1['Date'] = pd.to_datetime(df1['Date']) df1 = df1.set_index('index') for col in df1.colums[1:]: plt.plot(df1['Date'], df1[col])

你可以melt你的列並使用seaborn.lineplot

import seaborn as sns

sns.lineplot(data=df1.replace('nan', float('nan')).melt(id_vars=['Date']),
             x='Date', y='value', hue='variable'
            )

輸出:

線圖

暫無
暫無

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

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