python - 每种数据拆分类型的形状气泡图
问题描述
我已经创建了一个气泡图,我在其中测量了真实与预测的标签值,我想知道是否可以根据数据拆分来更改绘图形状。我想保持每个 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)
问题:
包含验证数据会很好,我怎样才能按形状区分,例如三角形/圆形?
解决方案
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'},
)
推荐阅读
- docker - docker-compose 无法自动设置环境值
- python - 读取和写入一个csv文件Python
- swift - 快速将字符串元素转换为数组中的 int 元素
- reactive-programming - 谁在响应式 Web 应用程序中调用 Flux 或 Mono 订阅
- asterisk - 如何获取来电显示变量?
- java - 一个 LDAP 的 AD 身份验证失败,但另一个 LDAP 通过
- pyinstaller - 在可执行文件中运行 Xgboost 时出现问题
- kotlin - 如何使用 kotlin 作为服务器端语言?
- sql - 将使用 switch case 创建的 SQL 视图转换为 Postgresql
- python - 从 SPSS 到 Python 日期的整数日期