2017-04-18 121 views
0

我在延长this的问题,以弄清楚如何使每条线条成为不同的红色或黑色阴影。这可能需要制作自定义颜色映射表或调整颜色表“RdGy”。Colormap线显示为相同的颜色。

使用从最后一个问题的数据和包,这是我到目前为止有:

df0.groupby([df0.ROI.str.split('_').str[0],'Band']).Mean.plot.kde(colormap='RdGy') 
plt.legend() 
plt.show() 

而且这个数字看起来是这样的:

enter image description here

但我想' bcs的线条是黑色的阴影,红色的线条是红色的阴影。这怎么可能?

自定义图例中线条的名称也很棒,例如“BCS Band 1”等。但不知道如何做到这一点。

回答

1

原则@Robbies对链接问题的答案为您提供了创建所需颜色和标签线所需的所有工具。

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 

df = pd.DataFrame() 
nam = ["red", "bcs"] 
for i in range(8): 
    df['{}_{}'.format(nam[i//4],i%4)] = np.random.normal(i, i%4+1, 100) 

nam = {"red":plt.cm.Reds, "bcs": plt.cm.gray_r} 
fig, ax = plt.subplots() 
for i, s in enumerate(df.columns): 
    df[s].plot(kind='density', color=nam[s.split("_")[0]]((i%4+1)/4.), 
       label=" Band ".join(s.split("_"))) 

plt.legend() 
plt.show() 

enter image description here

当然,你也可以只使用字符串像传说中的条目列表。或者把它们提供给绘图功能的标签说法,

labels = "This is a legend with some custom entries".split() 
for i, s in enumerate(df.columns): 
    df[s].plot(kind='density', color=nam[s.split("_")[0]]((i%4+1)/4.), 
       label=labels[i]) 

使用legendlabels说法,

labels = "This is a legend with some custom entries".split() 
for i, s in enumerate(df.columns): 
    df[s].plot(kind='density', color=nam[s.split("_")[0]]((i%4+1)/4.)) 

plt.legend(labels=labels) 

enter image description here

+0

有没有一种办法只需在图例中手动输入名称而不是“红色波段0”等,但要使用我想要使用的字符串定义矢量? @ImportanceOfBeingErnest – JAG2024

+0

是的,我更新了答案。 – ImportanceOfBeingErnest

相关问题