gpt4 book ai didi

python - Seaborn 调色板 - 防止颜色回收

转载 作者:太空狗 更新时间:2023-10-29 17:19:43 37 4
gpt4 key购买 nike

Seaborn 允许定义包含多种颜色的调色板,这对具有多行的图表很有用。但是,当将调色板设置为具有多种颜色的调色板时,仅使用前六种颜色,之后颜色会循环使用,因此很难区分线条。这可以通过显式调用调色板来覆盖,但这并不方便。当定义的颜色超过 6 种时,是否有办法强制 Seaborn 当前调色板不回收颜色?

例子:

from matplotlib import pyplot as plt
import pandas as pd
import seaborn as sb

# Define a palette with 8 colors
cmap = sb.blend_palette(["firebrick", "palegreen"], 8)
sb.palplot(cmap)

palette with 6 colors

# Set the current palette to this; only 6 colors are used
sb.set_palette(cmap)
sb.palplot(sb.color_palette() )

palette with 6 colors

df = pd.DataFrame({x:[x*10, x*10+5, x*10+10] for x in range(8)})
fig, (ax1, ax2) = plt.subplots(2,1,figsize=(4,6))
# Using the current palette, colors repeat
df.plot(ax=ax1)
ax1.legend(bbox_to_anchor=(1.2, 1))
# using the palette that defined the current palette, colors don't repeat
df.plot(ax=ax2, color=cmap)
ax2.legend(bbox_to_anchor=(1.2, 1)) ;

charts with 6 or 8 colors used

最佳答案

解决方案(感谢@tcaswell 的指点):使用所有颜色显式设置调色板:

# Setting the palette using defaults only finds 6 colors
sb.set_palette(cmap)
sb.palplot(sb.color_palette() )
sb.palplot(sb.color_palette(n_colors=8) )

# but setting the number of colors explicitly allows it to use them all
sb.set_palette(cmap, n_colors=8)
# Even though unless you explicitly request all the colors it only shows 6
sb.palplot(sb.color_palette() )
sb.palplot(sb.color_palette(n_colors=8) )

enter image description here enter image description here enter image description here enter image description here

# In a chart, the palette now has access to all 8 
fig, ax1 = plt.subplots(1,1,figsize=(4,3))
df.plot(ax=ax1)
ax1.legend(bbox_to_anchor=(1.2, 1)) ;

enter image description here

关于python - Seaborn 调色板 - 防止颜色回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26301347/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com