首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在同一地块的海上使用多个共格

如何在同一地块的海上使用多个共格
EN

Stack Overflow用户
提问于 2014-09-17 15:36:00
回答 1查看 3.9K关注 0票数 2

我有一些测试数据:

代码语言:javascript
复制
import numpy as np
x_data = np.arange(10)
y = np.random.rand(len(x_data))

具有不同性质

代码语言:javascript
复制
ix1 = x_data < 5
ix2 = x_data >= 5

我想从视觉上调查这些差异,但我把情节搞砸了:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_context('poster')

fig, ax = plt.subplots(figsize=(4, 4))
for i, x in enumerate(x_data):
    if ix1[i]:
        sns.set_palette('rainbow', sum(ix1))
    if ix2[i]:
        sns.set_palette('coolwarm', sum(ix2))
    plt.plot(x, y[i], 'o', label='{}'.format(x))
plt.legend(loc='best', prop={'size': 6})
plt.show()

结果应该是0-4点是彩虹(红-紫),5-9点是冷温(蓝-白-红),但相反:

因此,有两个问题:

  1. 调用sns.set_palette()后调用plt.subplots可以吗?
  2. 有没有办法不止一次地设置调色板?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-17 15:55:50

不,由于matplotlib的工作方式,颜色调色板是Axes对象的一个属性,所以在创建Axes时,当前设置的调色板是什么都是它将要使用的。如果您想黑入私有属性(请参阅here),这是可能的,但我不建议这样做。

下面是我可以在您的案例中提出的,使用一种可能不太适用的不同方法:

代码语言:javascript
复制
pal1 = sns.color_palette('rainbow', sum(ix1))
pal2 = sns.color_palette('coolwarm', sum(ix2))

fig, ax = plt.subplots(figsize=(4, 4))
ax.scatter(x_data[ix1], y[ix1], c=pal1, s=60, label="smaller")
ax.scatter(x_data[ix2], y[ix2], c=pal2, s=60, label="larger")
ax.legend(loc="lower right", scatterpoints=5)

FWIW,这种可视化感觉非常复杂,很难处理(而且您选择的两个调色板重叠了相当多,并不适合这些数据),因此它可能值得从更简单的东西开始。

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

https://stackoverflow.com/questions/25894800

复制
相关文章

相似问题

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