gpt4 book ai didi

python - 使用 seaborn 色调时分配平均标记的颜色

转载 作者:行者123 更新时间:2023-12-04 04:01:13 25 4
gpt4 key购买 nike

在 Seaborn 中,我可以通过提供 meanprops 来分配均值标记的颜色
例如:

meanprops: {'marker': 'o', 'markeredgecolor': c,
'markerfacecolor': 'none', 'markersize': 4}
但是,如果我使用色调制作绘图,这将为所有类别设置相同的均值颜色。我如何也可以应用色调颜色来表示。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
df_merge = pd.DataFrame(data={'AOD_440nm': np.random.rand(20),
'month': np.tile(['Jan','Feb'], 10),
'kind': np.repeat(['A', 'B'], 10)})
fig,ax = plt.subplots()
sns.boxplot(x='month', y='AOD_440nm', hue='kind', data=df_merge,
showfliers=False, whis=[5, 95],
palette=sns.color_palette(('r', 'k')),
showmeans=True)
for i, artist in enumerate(ax.artists):
# Set the linecolor on the artist to the facecolor, and set the facecolor to None
col = artist.get_facecolor()
artist.set_edgecolor(col)
artist.set_facecolor('None')
简而言之,我怎样才能改变手段的颜色?

最佳答案

您可以遍历箱线图生成的所有“线”。箱线图为每个框生成多条线,每个元素一条线。均值的标记也是“线”,但具有线型 None , 只有一个标记(类似于 plt.plot 如何绘制标记)。每个框的确切行数取决于选项(如:有/无均值、 mustache 等)。由于更改非标记线的标记颜色没有明显效果,因此更改所有标记颜色是最简单的方法。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

df_merge = pd.DataFrame(data={'AOD_440nm': np.random.rand(20),
'month': np.tile(['Jan', 'Feb'], 10),
'kind': np.repeat(['A', 'B'], 10)})
fig, ax = plt.subplots()
sns.boxplot(x='month', y='AOD_440nm', hue='kind', data=df_merge,
showfliers=False, whis=[5, 95],
palette=sns.color_palette(('r', 'k')),
showmeans=True)

num_artists = len(ax.artists)
num_lines = len(ax.lines)
lines_per_artist = num_lines // num_artists
for i, artist in enumerate(ax.artists):
# Set the linecolor on the artist to the facecolor, and set the facecolor to None
col = artist.get_facecolor()
artist.set_edgecolor(col)
artist.set_facecolor('None')
# set the marker colors of the corresponding "lines" to the same color
for j in range(lines_per_artist):
ax.lines[i * lines_per_artist + j].set_markerfacecolor(col)
ax.lines[i * lines_per_artist + j].set_markeredgecolor(col)
plt.show()
example plot
PS:替代 artist.set_facecolor('None')可以使用强透明度: artist.set_alpha(0.1) .
using transparency

关于python - 使用 seaborn 色调时分配平均标记的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63038011/

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