簡體   English   中英

熊貓如何有不同顏色的折線圖

[英]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.

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