【问题标题】:Seaborn python change colour series on plotsSeaborn python 在绘图上更改颜色系列
【发布时间】:2019-07-26 03:19:29
【问题描述】:

我正在尝试更改 Seaborn 在绘图上使用的默认配色方案,我只想要一些简单的东西,例如他们文档中显示的 HLS 方案。但是他们的方法似乎不起作用,我只能假设这是由于我使用了“色调”,但我不知道如何让它正常工作。这是当前代码,datain 只是一个包含正确数字列数的文本文件,以 p 作为索引值:

import pandas as pd
import numpy as np
datain = np.loadtxt("data.txt")
df = pd.DataFrame(data = datain, columns = ["t","p","x","y","z"])
ax3 = sns.lineplot("t", "x", sns.color_palette("hls"), data = df[df['p'].isin([0,1,2,3,4])], hue = "p")
plt.show()

代码将前几个数据集从文件中绘制出来,如果我不包含 sns.color_palette 函数,它们会出现在 seaborn 似乎默认的奇怪的紫色柔和选择中。如果我包含它,我会收到错误:

TypeError: lineplot() 为关键字参数“hue”获取了多个值

考虑到 lineplot 函数接受的格式,这似乎有点奇怪。

【问题讨论】:

    标签: python matplotlib colors seaborn


    【解决方案1】:

    第一件事:您需要坚持正确的语法。调色板通过palette 参数提供。只要把它作为lineplot 的第三个参数,它就会被解释为lineplot 的第三个参数,恰好是hue

    然后,您需要确保调色板中的颜色与您拥有不同的p 值一样多。

    import seaborn as sns
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    datain = np.c_[np.arange(50),
                   np.tile(range(5),10),
                   np.linspace(0,1)+np.tile(range(5),10)/0.02]
    df = pd.DataFrame(data = datain, columns = ["t","p","x"])
    
    ax = sns.lineplot("t", "x", data = df, hue = "p", 
                      palette=sns.color_palette("hls", len(df['p'].unique())))
    
    plt.show()
    

    【讨论】:

    • 糟糕,我的论点很困惑,对此表示感谢和抱歉。这很有帮助,谢谢!对我不起作用的一件事是len(df['p'].unique()),它告诉我它的长度不同,这是真的,我的原始数据集有 50 个唯一的“p”标签,我只绘制了前 5 个样品,当然易于管理。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 2019-03-17
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    相关资源
    最近更新 更多