【问题标题】:How to set amount of hue levels in seaborn?如何在seaborn中设置色调级别?
【发布时间】:2022-01-17 08:14:01
【问题描述】:

通过以下代码,我可以使用 seaborn 的散点图来绘制数据,并将某些颜色分配给数据值。

如何设置此示例中使用的颜色数量? (例如,如果我只想使用两种颜色或多于示例中显示的 6 种颜色)

import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')

print("tips.columns=", tips.columns) # tips.columns= Index(['total_bill', 'tip', 'sex', 'smoker', 'day', 'time', 'size'], dtype='object')


sns.scatterplot(data=tips, x="total_bill", y="tip", hue="total_bill", )

【问题讨论】:

  • Seaborn 的scatterplot 有一个legend= 关键字,可以是'auto''brief''full'False。如果你想要别的东西,你需要创建一个自定义图例。
  • 感谢您的建议。但它不应该是影响颜色数量的色相参数本身吗?因为如果我省略图例,我仍然希望拥有 e。 G。只有两种颜色。
  • 听起来很值得enhance request on seaborn,我鼓励你提交。

标签: python seaborn scatter-plot


【解决方案1】:

Seaborn 的scatterplot 有一个legend= 关键字,可以是'auto''brief''full'False。如果你想要别的东西,你需要创建一个自定义图例。

如果您想控制使用的级别和颜色的确切数量,您可以创建一个包含这些色调级别的附加列。这样,您就可以完全控制关卡及其命名。熊猫pd.cut() 可能会有所帮助。它接受多个 bin 或边界列表。您可以同时设置名称(默认标签会将边界指示为'({start},{end}]')。

这是一个例子:

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

tips = sns.load_dataset('tips')

fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(14, 4))

tips['bill level'] = pd.cut(tips["total_bill"], [0, 30, 1000], labels=["≤ 30", "> 30"])
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="bill level", palette=['turquoise', 'crimson'], ax=ax1)
ax1.set_title('2 levels, 2 colors')

tips['bill level'] = pd.cut(tips["total_bill"], bins=7, labels=[f'level {i}' for i in range(1, 8)])
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="bill level", palette='Set2', ax=ax2)
ax2.set_title('7 levels, 7 colors')

plt.tight_layout()
plt.show()

【讨论】:

  • 我还建议您查看hue_norm 并可能传递BoundaryNorm。这可能会更容易,尽管您不会在这里获得您正在制作的漂亮的自定义图例。
猜你喜欢
  • 1970-01-01
  • 2022-01-03
  • 2021-03-16
  • 2021-06-16
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多