【问题标题】:Creating a dark, reversed color palette in Seaborn在 Seaborn 中创建一个深色的、反转的调色板
【发布时间】:2015-07-18 06:57:47
【问题描述】:

我正在使用这样的顺序调色板创建一个包含多个图的图形:

import matplotlib.pyplot as plt
import seaborn as sns
import math

figure = plt.figure(1)
x = range(1, 200)
n_plots = 10

with sns.color_palette('Blues_d', n_colors=n_plots):
    for offset in range(n_plots):
        plt.plot(x, [offset + math.sin(float(i) / 10) for i in range(len(x))])

figure.show()

但是,我想反转调色板。 The tutorial 声明我可以将'_r' 添加到调色板名称以反转它,并添加'_d' 使其“变暗”。但我似乎不能一起做这些:'_r_d''_d_r''_rd''_dr' 都会产生错误。如何创建一个深色的反转调色板?

【问题讨论】:

  • 调色板只是列表,因此您可以随时使用reversed() 函数。

标签: python python-2.7 seaborn


【解决方案1】:

我正在回答我自己的问题以发布我使用的解决方案的详细信息和解释,因为 mwaskom 的建议需要进行调整。使用

with reversed(sns.color_palette('Blues_d', n_colors=n_plots)):

抛出 AttributeError: __exit__,我相信因为 with 语句需要一个具有 __enter____exit__ 方法的对象,而 reversed 迭代器不满足这些方法。如果我使用 sns.set_palette(reversed(palette)) 而不是 with 语句,即使遵循配色方案,图中的颜色数也会被忽略(使用默认值 6 - 我不知道为什么)。为了解决这个问题,我使用list.reverse() 方法:

figure = plt.figure(1)
x = range(1, 200)
n_plots = 10
palette = sns.color_palette("Blues_d", n_colors=n_plots)
palette.reverse()

with palette:
    for offset in range(n_plots):
        plt.plot(x, [offset + math.sin(float(i) / 10) for i in range(len(x))])

figure.show()

编辑:discovered 认为n_colors 参数在对set_palette 的调用中被忽略的原因是n_colors 参数也必须在该调用中指定。因此,另一种解决方案是:

figure = plt.figure(1)
x = range(1, 200)
n_plots = 10

sns.set_palette(reversed(sns.color_palette("Blues_d", n_plots)), n_plots)

for offset in range(n_plots):
    plt.plot(x, [offset + math.sin(float(i) / 10) for i in range(len(x))])

figure.show()

【讨论】:

    猜你喜欢
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2018-03-15
    • 1970-01-01
    • 2020-04-28
    • 2012-12-20
    • 1970-01-01
    相关资源
    最近更新 更多