首页 > 解决方案 > 更改散点图中的标记大小

问题描述

我有以下数据框(见下文),我试图绘制 y 与 y_pred,然后根据它们的大小着色,并根据它们的间隔大小更改标记的大小。如果有大间隔尺寸的标记,则颜色会更鲜艳,尺寸更大。

y   interval_size   y_pred
0.039268    2.414647    0.487695
0.049268    0.984652    0.326719
0.044148    1.268927    0.520769
0.050269    0.985148    0.415107
0.059282    0.965122    0.467267

我正在使用以下代码生成此图:

图码

plt.style.use("seaborn")
sns.set_style("darkgrid")
fig, ax = plt.subplots(figsize=(18,9))
plt.scatter(x = true_labels, y = predictions, c=interval_size, alpha=0.6,
            cmap='viridis', sizes=(20, 150), s = interval_size) 
cbar= plt.colorbar()
cbar.set_label("Interval Width", labelpad=+1, fontsize = 20)
plt.title("True vs Predicted Labels", fontsize = 36)
plt.xlabel("True Labels", fontsize = 25)
plt.ylabel("Predicted Labels", fontsize = 25)

我能够根据颜色生成大小不同的图,但我并没有真正将标记设置为不同的大小。

在此处输入图像描述

此外,是否可以更改每列的标记类型,在这种情况下,属于列 y 或 y_pred 的标记类型可以不同?我尝试实现这里所做的但没有成功:stackoverflow_link

我收到这个警告:

/home/felicia/my_python_env/lib/python3.7/site-packages/matplotlib/collections.py:922: RuntimeWarning: invalid value encountered in sqrt
  scale = np.sqrt(self._sizes) * dpi / 72.0 * self._factor

标签: pythonmatplotlibplot

解决方案


因此,如果有人有兴趣,我可以多玩一点并用谷歌搜索,我能够修复它:

#Plot Data
plt.style.use("seaborn")
sns.set_style("darkgrid")
fig, ax = plt.subplots(figsize=(18,9))
plt.scatter(x = true_labels, y = predictions, c=interval_size, alpha=0.65,
            cmap='viridis', s = (interval_size**2)*20)

#Plot Characteristics
cbar= plt.colorbar()
cbar.set_label("Interval Width", labelpad=+1, fontsize = 20)
plt.title("True vs Predicted Labels", fontsize = 36)
plt.xlabel("True Labels", fontsize = 25)
plt.ylabel("Predicted Labels", fontsize = 25)

请注意,size 参数s表示点的面积。在这种情况下,要使直径与显示该值的数量成正比,就必须平方。

在此处输入图像描述


推荐阅读