在seaborn中,色调为组设置不同的颜色。我可以根据JointGrid中的组设置alpha吗?或者甚至是在单个数据点上?
sns.set_theme()
jg = sns.JointGrid(data=df_sns, x='x', y='y', hue='hue')
jg.plot_joint(sns.scatterplot)
jg.plot_marginals(sns.histplot, kde=False)
jg.set_axis_labels(xlabel='x', ylabel='y')
jg.fig.tight_layout()发布于 2021-03-17 18:43:55
(更新:按照评论中的建议使用to_rgba()。)
您可以创建一个包含带有alpha的颜色的palette。创建这种颜色的一种简单方法是使用十六进制格式:'#RRGGBBAA'。或者,您可以将任何matplotlib颜色转换为rgb并添加alpha,如示例代码所示:
import matplotlib.pyplot as plt
from matplotlib.colors import to_rgba
import seaborn as sns
iris = sns.load_dataset("iris")
g = sns.JointGrid(data=iris, x='sepal_length', y='sepal_width', hue='species')
color_dict = {'setosa': to_rgba('cornflowerblue', 1),
'versicolor': to_rgba('crimson', 0.7),
'virginica': to_rgba('turquoise', 0.4)}
g.plot_joint(sns.scatterplot, palette=color_dict)
g.plot_marginals(sns.histplot, kde=False, palette=color_dict, multiple='stack')
plt.tight_layout()
plt.show()

发布于 2021-03-17 17:14:55
创建一个空的JoinGrid并为每个创建散点图和直方图。在散点图中,我为要分离透明度的类别中提取的数据设置透明度和颜色。请参考official reference。
import seaborn as sns
penguins = sns.load_dataset("penguins")
g = sns.JointGrid()
x, y = penguins["bill_length_mm"], penguins["bill_depth_mm"]
color_dict = dict({'Male': 'C0', 'Female': 'C1'})
for _,gr in penguins.groupby('sex'):
if _ == 'Male':
alpha = 1.0
else:
alpha = 0.5
sns.scatterplot(x=x, y=y, hue='sex', data=gr, ax=g.ax_joint, s=100, alpha=alpha, palette=color_dict)
sns.histplot(x=x, kde=False, ax=g.ax_marg_x)
sns.histplot(y=y, kde=False, ax=g.ax_marg_y)

https://stackoverflow.com/questions/66667334
复制相似问题