python - 在 seaborn 散点图中为不同类别设置不同的透明度值
问题描述
这个问题与我在此处发布的上一个问题有关。我的 seaborn 散点图代码如下所示:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
df = pd.DataFrame()
df['First PCA dimension'] = [1,2,3,4]
df['Second PCA dimension'] = [0,5,5,7]
df['Third PCA dimension'] = [1,2,6,4]
df['Data points'] = [1,2,3,4]
plt.figure(figsize=(42,30))
plt.title('2-D PCA of my data points',fontsize=32)
colors = ["#FF9926", "#2ACD37","#FF9926", "#FF0800"]
b = sns.scatterplot(x="First PCA dimension", y="Second PCA dimension", hue="Data points", palette=sns.color_palette(colors), data=df, legend="full", alpha=0.3)
sns.set_context("paper", rc={"font.size":48,"axes.titlesize":48,"axes.labelsize":48})
b.set_ylabel('mylabely', size=54)
b.set_xlabel('mylabelx', size=54)
b.set_xticklabels([1,2,3,4,5,6,7,8], fontsize = 36)
lgnd = plt.legend(fontsize='22')
for handle in lgnd.legendHandles:
handle.set_sizes([26.0])
plt.show()
alpha值 0.3 为我的散点图中的每个点设置了一个透明度值。但是,我想为每个数据点(基于它所属的类别)设置不同的透明度值。这是否可以通过提供 alpha 值列表来实现,类似于我在上面的示例中提供颜色列表的方式?
解决方案
如评论中所述,这是您目前无法使用seaborn
.
但是,您可以通过使用标记的关键颜色来破解它,并使用 RGBA 颜色查找替换这些PathCollection.get_facecolor()
颜色PathCollection.set_facecolor()
。
因此,例如,我需要 aswarmplot
在 a 之上violinplot
,具有不同不透明度的某些类别的点。要将灰色变为透明黑色(我需要做的),我们可以这样做:
seaborn.violinplot(...)
points = seaborn.swarmplot(...)
for c in points.collections:
if not isinstance(c, PathCollection):
continue
fc = c.get_facecolor()
if fc.shape[1] == 4:
for i, r in enumerate(fc):
# change mid-grey to 50% black
if numpy.array_equiv(r, array([0.5, 0.5, 0.5, 1])):
fc[i] = array([0, 0, 0, 0.5])
# change white to transparent
elif numpy.array_equiv(r, array([1, 1, 1, 1])):
fc[i] = array([0, 0, 0, 0])
c.set_facecolor(fc)
非常糟糕,但它让我得到了我需要的一次性图形。
推荐阅读
- python - 在两个单词之间插入连字符以在 Python 中的 URL 中使用
- group-by - 将列数据分组并存储在 Mysql 中的单独命名列中
- spring-boot - spring-boot-maven-plugin build-info.properties
- google-developers-console - 您的付款资料目前已暂停 - Google 控制台
- r - 如何在传单地图中为形状文件的部分着色
- python - Dask 数据框:`set_index` 可以将单个索引放入多个分区吗?
- javascript - Javascript 生成的输入被忽略
- javascript - React Native:使用有效负载导航的操作未由任何导航器处理
- azure - 如何在 Azure 网关应用程序中传递密钥
- reactjs - 头像背景颜色在material-ui v5中没有动态变化