如何在Matplotlib中使用两组颜色图?

时间:2020-03-26 23:56:34

标签: python matplotlib seaborn

我试图在同一图中绘制两组数据,同时为每个数据集使用独立的颜色图。我分别使用cmap_blue创建了两个色图cmap_greensns.choose_colorbrewer_palette('sequential')。但是,当我尝试使用以下代码绘制数据集时,似乎第二个sns.set_palette()会覆盖第一个,从而导致两个数据集都呈现绿色渐变。

sns.set_context('paper')
fig, ax = plt.subplots(figsize=[2.5, 2.5])

ax.set_xlim(0,600)
ax.set_ylim(0,15)

sns.set_palette(cmap_blue)
ax.plot(time_prot60, SFT_prot60)
ax.plot(time_prot70, SFT_prot70)
ax.plot(time_prot80, SFT_prot80)

sns.set_palette(cmap_green)
ax.plot(time_buffer60, SFT_buffer60)
ax.plot(time_buffer70, SFT_buffer70)
ax.plot(time_buffer80, SFT_buffer80)

plt.grid(True)
plt.savefig('/content/gdrive/My Drive/SVG/prot.svg', format='svg', bbox_inches = 'tight')

1 个答案:

答案 0 :(得分:0)

问题是with open('testfile.txt') as f: f_list = [float(s) for s in f] 设置了matplotlib的默认颜色周期。但是颜色循环也是每个sns.set_palette的属性。因此,ax仅对之后创建的sns.set_palette有影响。在帖子的问题中,ax早已创建,并且已经具有自己的颜色循环。

因此,要获得所需的行为,必须将调色板明确分配给ax。函数ax就是这样做的。这是一些代码。请注意,我将ax.set_prop_cycle重命名为cmap_blue来区分颜色图(输出颜色的函数)和调色板(颜色列表)。

palette_blue

enter image description here