簡體   English   中英

熊貓繪制一個線圖,在列上有顏色變化

[英]pandas plot one line graph with color change on column

我的數據框

df = pd.DataFrame({'date': ['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05'], 'b': ['a', 'a', 'b', 'b', 'c'], 'c': [1,2,3,4,5]})

         date  b  c
0  2018-01-01  a  1
1  2018-01-02  a  2
2  2018-01-03  b  3
3  2018-01-04  b  4
4  2018-01-05  c  5

我想繪制一個折線圖,其中 X 是date , y 是c並且線的顏色基於b變化。 對於此示例,應該有 3 種不同的顏色,只要它們不同,實際顏色就無關緊要。

我雖然會起作用,但它不允許按列更改顏色。

輸出應該是一個行會改變顏色

您基本上想為b列中的每個值創建一個新系列。 一種方法是對dateb進行分組,然后將b取消堆疊,另一種方法是使用pivot 然后只是繪制結果。

df.pivot(index='date', columns='b').droplevel(0, axis=1).plot(colors='rbc')  
# 'rbc' = ['red', 'blue', 'cyan'] 
# These colors are based on the column ordering, e.g. 'a', 'b', 'c'.

更明確的顏色:

colors = {
    'a': 'red',
    'b': 'blue',
    'c': 'cyan'
}
(df
 .pivot(index='date', columns='b')
 .droplevel(0, axis=1)[colors.keys()]
 .plot(colors=colors.values())
)

在此處輸入圖片說明

咱們試試吧:

_, ax = plt.subplots()
df['date'] = pd.to_datetime(df['date'])
colors = {'a':'r', 'b':'b','c':'c'}
for n, g in df.groupby('b'):
     g.plot('date','c', marker='o', ax=ax, color=colors[n])

ax.legend()

輸出:

在此處輸入圖片說明

暫無
暫無

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

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