首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Matplotlib中使用两组共格?

如何在Matplotlib中使用两组共格?
EN

Stack Overflow用户
提问于 2020-03-26 23:56:34
回答 1查看 171关注 0票数 0

我试图用相同的图形来绘制两组数据集,同时对每个数据集使用独立的共格集。我分别使用cmap_bluecmap_green使用sns.choose_colorbrewer_palette('sequential')创建了两个共枕。但是,当我试图使用以下代码绘制数据集时,第二个sns.set_palette()似乎覆盖了第一个数据集,从而导致了这两个数据集的绿色梯度。

代码语言:javascript
运行
复制
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')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-27 01:33:28

问题是sns.set_palette为matplotlib设置了默认的颜色周期。但是颜色周期也是每个ax的一个属性。因此,sns.set_palette只对事后创建的ax产生影响。在帖子的问题上,ax已经创建得更早了,并且已经有了自己的颜色周期。

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

代码语言:javascript
运行
复制
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from cycler import cycler

fig, ax = plt.subplots()

palette_blue = sns.color_palette("Blues")
palette_green = sns.color_palette("Greens")

ax.set_prop_cycle(cycler(color=palette_blue))
for i in range(1, 4):
    plt.plot(np.linspace(0, 10, 100), 10 * i + np.random.normal(0, 1, 100).cumsum())
ax.set_prop_cycle(cycler(color=palette_green))
for i in range(4, 7):
    plt.plot(np.linspace(0, 10, 100), 10 * i + np.random.normal(0, 1, 100).cumsum())

plt.show()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60877983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档