python - 更改散点图中的标记大小
问题描述
我有以下数据框(见下文),我试图绘制 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
解决方案
因此,如果有人有兴趣,我可以多玩一点并用谷歌搜索,我能够修复它:
#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
表示点的面积。在这种情况下,要使直径与显示该值的数量成正比,就必须平方。