python - 一个图中具有不同seaborn调色板的曲线族

标签 python matplotlib seaborn

在我的 python 程序中,我有三组曲线,我想为每组曲线分配一个seaborn调色板并将它们全部绘制到一个图中。

到目前为止我的解决方案是以下代码。

sns.set_style('whitegrid')
volt = np.zeros(N)
states = np.zeros([6,N])

for k in range(1,4):
    if k == 1:
        sns.set_palette('Blues_d',6)
    if k == 2:
        sns.set_palette('BuGn_d',6)
    if k == 3:
        sns.set_palette('Oranges_d',6)

    for i in range(N):
        j = -1 + 2*float(i)/N
        volt[i] = j*(mu[1]-mu[0])
        state = evolve(s, ss, PP, beta, float(k) * D / 3, B, j * mu, tmax)

        for j in range(6):
            states[j,i] = state[j]

    for i in range(6):
        y = np.zeros(N)

        for j in range(N):
            y[j] = states[i,j]
        plt.plot(volt,y)

plt.show()

但是,绘图最终总是在第一个调色板“Blues_d”中渲染。如何更改代码,以便第一组曲线用“Blues_d”绘制,第二组曲线用“BuGn_d”绘制,第三组曲线用“Oranges_d”绘制,但在同一图中?

最佳答案

我意识到这并不能直接回答你的问题(部分原因是你的代码不是一个最小的工作示例),但如果你要使用 seaborn 那么它可能在您最感兴趣的是开始使用 pandas 处理您的数据。很多 seaborn 都是在考虑 pandas 的情况下编写的,因此这两个 jive 非常好。使用多个调色板绘图就是一个这样的例子,

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns; sns.set_style('whitegrid')

x = np.linspace(0, 3, 31)

U_df = pd.DataFrame({
    'u1': 2.6*x**2 - 4.5,
    'u2': 2.5*x**2 - 4.9,
    'u3': 2.3*x**2 - 4.7}, index=x)

V_df = pd.DataFrame({
    'v1': -5.1*x + 11,
    'v2': -4.9*x + 10,
    'v3': -5.5*x + 12}, index=x)

W_df = pd.DataFrame({
    'w1': -6.5*(x-1.6)**2 + 9.1,
    'w2': -6.2*(x-1.8)**2 + 9.5,
    'w3': -6.1*(x-1.5)**2 + 9.7}, index=x)

fig, ax = plt.subplots()

U_df.plot(ax=ax, color=sns.color_palette('Blues_d', 3))
V_df.plot(ax=ax, color=sns.color_palette('BuGn_d', 3))
W_df.plot(ax=ax, color=sns.color_palette('Oranges_d', 3))

ax.legend(ncol=3, loc='best')

enter image description here

关于python - 一个图中具有不同seaborn调色板的曲线族,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41806066/

相关文章:

python - DataFrame 无法通过 : getting following error: tuple indices must be integers or slices, 而不是 str 进行迭代

python - ValueError:格式字符串中无法识别的字符 a

python - 如何将 seaborn jointplot 轴设置为对数刻度

python - 为什么我的颜色条中有线条?

python - 使用 matplotlib 中的大小缩放误差条透明度

python - seaborn 的 lmplot : KeyError [ . ..] 不在索引中; excel 和 csv 导入

python - 如何在单个图中绘制多个seaborn.distplot

python - OpenCV Python激光点跟踪提取x和y坐标并将其存储到不同的变量

python - 使用 Python 3.4 在 Textmate 2 中输出错误

Python 3 不会引发无效文件名的异常