如何调整Seaborn散点图图例中点的大小?

问题描述 投票:0回答:2

我知道searbons

s
中的
scatterplot
参数可以控制点的大小。例如:

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame()
df['Y_LOCATION'] = [1, 1, 1, 2, 2, 4]
df['X_LOCATION'] = [1, 2, 3, 4, 3, 1]
df['VALUE'] = [-0.45, -0.14, -0.12, -0.36, -0.48, -0.20]
sns.set(rc={'figure.figsize':(40,20)})
sns.set(font_scale=2)
sns.scatterplot(df.Y_LOCATION, df.X_LOCATION, df.VALUE, s=800, palette = "Greens_r")

但是,此参数似乎对图例中显示的点的大小没有影响。这些如何调整?

python seaborn legend scatter-plot
2个回答
2
投票

您可以通过获取图例中点的句柄并对其调用

set_sizes()
来增加这些点的大小。默认情况下它们是 [36],将其乘以 10,面积(不是直径)就会增加 10 倍。

示例:

ax = sns.scatterplot(x = df.Y_LOCATION, y = df.X_LOCATION, hue = df.VALUE, s=800, palette = "Greens_r")
handles, labels = ax.get_legend_handles_labels()
for dot in handles:
    dot.set_sizes(dot.get_sizes() * 10)
plt.legend(handles, labels)

另请参阅:如何在seaborn散点图图例中调整太大的点尺寸?

有关 PathCollection.set_sizes() 的文档:https://matplotlib.org/stable/api/collections_api.html#matplotlib.collections.PathCollection.set_sizes


0
投票

你可以这样做..

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

plt.figure(figsize=(4, 2))
sns.scatterplot(np.random.rand(1000, 2), s=1)
plt.legend(fontsize=8, markerscale=1)
plt.show()

© www.soinside.com 2019 - 2024. All rights reserved.