[英]pandas how to have different color line graph
我有一個數據框,
index block array_size time
0 2 100 0.102710
1 2 1000 0.356194
2 2 10000 2.884903
3 2 100000 28.484935
4 2 1000000 293.656645
5 2 8000000 91286.889516
6 4 100 0.103323
7 4 1000 0.347484
8 4 10000 2.799290
9 4 100000 27.3598
我想為塊的不同值設置不同的顏色(2 和 4。第二列)
我的這個圖的代碼是df.plot(x='array_size', y='time')
如何為每個變量設置不同的顏色?
您可以使用簡單的groupby
單獨繪制它們,或者如果您願意使用seaborn
將允許您為hue
指定一列
import pandas as pd
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8,4))
for idx, gp in df.groupby('block'):
gp.plot(x='array_size', y='time', ax=ax, label=idx)
plt.show()
使用seaborn
(至少 0.9),您可以執行以下操作:
sns.lineplot(data=df, x='array_size', y='time', hue='block')
由於您有許多'blocks'
因此標准顏色循環儀不會切割它。 您可以使用ax.set_prop_cycle
輕松調整
df = pd.DataFrame({'x': np.tile(np.arange(1,11,1),20),
'y': np.random.randint(1,25,200),
'block': np.repeat(np.arange(1,21,1),10)})
fig, ax= plt.subplots(figsize=(8,4))
colors = sns.color_palette("coolwarm", df.block.nunique())
ax.set_prop_cycle('color', colors)
for idx, gp in df.groupby('block'):
gp.plot(x='x', y='y', ax=ax, legend=False)
plt.show()
這應該做。
import matplotlib.pyplot as plt
for unq_value in df['block'].unique():
mask = df['block'] == unq_value
df_subset = df[mask]
plt.plot(df_subset['array_size'], df_subset['time'])
plt.show()
在這里,我們在塊列中找到唯一值。 然后為每個唯一值對數據幀進行子集化,然后為每個數據幀子集單獨繪制。
使用.plot
方法的color
參數傳遞顏色列表,每列一個。
https://pandas.pydata.org/pandas-docs/dev/reference/api/pandas.DataFrame.plot.line.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.