Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 调整seaborn散点图中不同类别的不同透明度_Python_Matplotlib_Seaborn - Fatal编程技术网

Python 调整seaborn散点图中不同类别的不同透明度

Python 调整seaborn散点图中不同类别的不同透明度,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,我想要散点图中不同类别的不同alpha值(透明度) sns.scatterplot(x="BorrowerAPR", y="LoanOriginalAmount", data=df_new, alpha=0.03, hue="LoanStatus") 期望1级alpha为0.2 我认为seaborn是不可能的(尽管有人可能会证明我在这一点上是错的),但是你可以用通常的方式使用matplotlib 这意味着您可以根据喜欢的颜色(包括alpha)创建颜色贴图,并创

我想要散点图中不同类别的不同alpha值(透明度)

sns.scatterplot(x="BorrowerAPR", y="LoanOriginalAmount", data=df_new, 
                alpha=0.03, hue="LoanStatus")
期望1级alpha为0.2


我认为seaborn是不可能的(尽管有人可能会证明我在这一点上是错的),但是你可以用通常的方式使用matplotlib

这意味着您可以根据喜欢的颜色(包括alpha)创建颜色贴图,并创建
散点
绘图。然后需要手动创建图例

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
import pandas as pd

df = pd.DataFrame(np.random.randn(100,2), columns=list("AB"))
df["hue"] = np.random.randint(0,2, size=100)


colors = [(0.1215, 0.4667, 0.7059, 0.7), 
          (1.0000, 0.4980, 0.0550, 0.2)]
cmap = ListedColormap(colors)

plt.scatter(x="A", y="B", c="hue", data=df, cmap=cmap)


hl = [(plt.Line2D([],[], color=cmap(i), ls="", marker="o"), i) 
      for i in np.unique(df["hue"].values)]
plt.legend(*zip(*hl), title="hue")
plt.show()

一种方法是分别绘制它们,尽管如果不指定,会得到不同的颜色。以下是内置
tips
数据集的一个示例,其中吸烟者和非吸烟者的
alpha
值不同:

import seaborn as sns
import numpy as np

tips = sns.load_dataset("tips")
tips["alpha"] = np.where(tips.smoker == "Yes", 1.0, 0.5)

ax = sns.scatterplot(x="total_bill", y="tip",
                     data=tips[tips.alpha == 0.5], alpha=0.5)
sns.scatterplot(x="total_bill", y="tip", data=tips[tips.alpha == 1.0], 
                alpha=1.0, ax=ax)

这也会将较高的alpha点堆叠在较低的alpha点之上

对于多个
alpha
类别,更一般而言:

alphas = tips.alpha.sort_values().unique()
ax = sns.scatterplot(x="total_bill", y="tip",
                     data=tips[tips.alpha == alphas[0]], alpha=alphas[0])
for alpha in alphas[1:]:
    sns.scatterplot(x="total_bill", y="tip",
                    data=tips[tips.alpha == alpha], alpha=alpha, ax=ax)