mer*_*erv 4 python plot matplotlib legend seaborn
我有一个超过10K点的seaborn散点图(lmplot).为了感知所有数据,当绘图尺寸较大(使标记相对较小)并且标记上的alpha较低时,它会更好地工作.但是,这使得图例上的标记难以区分. 如何在Seaborn中设置标记大小和标记alpha?
我看到它g._legend有一个markersize属性,但直接设置它没有做任何事情.
import numpy as np
import pandas as pd
import seaborn as sns
n_group = 4000
pos = np.concatenate((np.random.randn(n_group,2) + np.array([-1,-1]),
np.random.randn(n_group,2) + np.array([0.2, 1.5]),
np.random.randn(n_group,2) + np.array([0.6, -1.8])))
df = pd.DataFrame({"x": pos[:,0], "y": pos[:, 1],
"label": np.repeat(range(3), n_group)})
g = sns.lmplot("x", "y", df, hue = "label", fit_reg = False,
size = 8, scatter_kws = {"alpha": 0.1})
g._legend.set_title("Clusters")
Run Code Online (Sandbox Code Playgroud)
您可以通过设置图例标记本身的Alpha值来完成此操作.您还可以使用_sizes相同的for循环设置标记大小:
n_group = 4000
pos = np.concatenate((np.random.randn(n_group,2) + np.array([-1,-1]),
np.random.randn(n_group,2) + np.array([0.2, 1.5]),
np.random.randn(n_group,2) + np.array([0.6, -1.8])))
df = pd.DataFrame({"x": pos[:,0], "y": pos[:, 1],
"label": np.repeat(range(3), n_group)})
g = sns.lmplot("x", "y", df, hue = "label", fit_reg = False,
size = 8, scatter_kws = {"alpha": 0.1})
g._legend.set_title("Clusters")
for lh in g._legend.legendHandles:
lh.set_alpha(1)
lh._sizes = [50]
# You can also use lh.set_sizes([50])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1482 次 |
| 最近记录: |