【问题标题】:Changing Marker Size in a ScatterPlot更改散点图中的标记大小
【发布时间】:2020-09-09 13:01:00
【问题描述】:

我有以下数据框(见下文),我试图绘制 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

【问题讨论】:

    标签: python matplotlib plot


    【解决方案1】:

    所以玩了一会儿,多用谷歌搜索,我能够修复它,如果有人感兴趣的话:

    #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)
    

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

    【讨论】:

      猜你喜欢
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 2018-02-01
      • 2019-03-18
      • 2017-02-18
      • 1970-01-01
      相关资源
      最近更新 更多