首页 > 解决方案 > 每种数据拆分类型的形状气泡图

问题描述

我已经创建了一个气泡图,我在其中测量了真实与预测的标签值,我想知道是否可以根据数据拆分来更改绘图形状。我想保持每个 interval_size 的绘图颜色,但只是根据数据拆分改变形状。

数据表

min            max          y    interval_size   y_pred     split
0.654531    1.021657    0.837415    0.367126    0.838094    train
0.783401    1.261898    1.000000    0.478497    1.022649    valid
-0.166070   0.543749    0.059727    0.709819    0.188840    train
0.493270    1.112610    0.504393    0.619340    0.802940    valid
0.140510    0.572957    0.479063    0.432447    0.356734    train

情节1

在此处输入图像描述

情节 2

在此处输入图像描述

情节代码

plt.figure(figsize=(16,8))

sns.set_context("talk", font_scale=1.1)
plt.figure(figsize=(10,6))
sns.scatterplot(x="y", 
                y="y_pred",
                size="interval_size",            
                data=df,
                alpha=0.65,
                c=interval_size,
                cmap='viridis', 
                hue = 'split',
                s = (interval_size**2)*50)
# Put the legend out of the figure
plt.legend(bbox_to_anchor=(1.01, 1),borderaxespad=0)
# Put the legend out of the figure
plt.legend(bbox_to_anchor=(1.01, 0.54),  borderaxespad=0.)

#Plot Characteristics
plt.title("True vs Predicted Labels", fontsize = 36)
plt.xlabel("True Labels", fontsize = 25)
plt.ylabel("Predicted Labels", fontsize = 25)

问题:

包含验证数据会很好,我怎样才能按形状区分,例如三角形/圆形?

标签: pythonmatplotlibseaborn

解决方案


Seaborn 在简单的参数中包含了大量的深度定制。对于您的代码,您只需将关键字参数添加到您的 sns.scatterplot() 函数:

style = 'split',

这将根据分类值更改标记,尽管它会选择默认值。如果您想对正在使用的特定标记进行更多控制,可以传递另一个参数以将分类值映射到特定标记:

markers = {'train': 'X', 'valid':'s'},

标记代码可以在 Matplotlib 网站 ( https://matplotlib.org/3.1.0/api/markers_api.html ) 上找到。

最终代码应如下所示:

sns.scatterplot(x="y", 
                y="y_pred",
                size="interval_size",            
                data=df,
                alpha=0.65,
                c=interval_size,
                cmap='viridis', 
                hue = 'split',
                s = (interval_size**2)*50,
                style = 'split',
                markers = {'train': 'X', 'valid':'s'},
)

推荐阅读