【问题标题】:Matplotlib.pyplot subplot is being cut off on right sideMatplotlib.pyplot 子图在右侧被切断
【发布时间】:2017-04-22 22:43:21
【问题描述】:

我非常接近最终完成我的卷积神经网络项目,但我很难尝试显示一个显示给定新交通标志图像的前 k 个分类概率的图。我想在左侧显示概率的散点图,在右侧显示相关图像。这是我定义的函数:

def plot_probability_per_class(probabilities, classes, image):
    figure = plt.figure()
    figure.subplots_adjust(right=1.5, hspace=0.5)

    subplot = figure.add_subplot(1,2,1)
    subplot.set_title('Probability per class')
    plt.plot(classes, probabilities, 'ro')  
    plt.ylabel('Probability')
    plt.xlabel('Class ID')

    subplot = figure.add_subplot(1,2,2)
    subplot.set_title('Image')
    plt.imshow(image)

    plt.show()

以下是生成的图形示例:

当我问的时候,有人能告诉我如何在散点图的右侧(或下方)放置一个图例以显示类 ID 的描述。类似于以下内容:

  1. = 限速(20 公里/小时)
  2. = 限速(30 公里/小时)
  3. = 限速 (50km/h)
  4. = 限速(60 公里/小时)
  5. = 限速 (70km/h)
  6. = 限速(80 公里/小时)
  7. = 限速结束 (80km/h)
  8. = 限速 (100km/h)
  9. = 限速 (120km/h)
  10. = 没有通过
  11. = 超过 3.5 公吨的车辆禁止通行

我对 Matplotlib 很陌生,我发现 API 文档很难阅读。任何帮助将不胜感激。

【问题讨论】:

  • 你为什么使用:figure.subplots_adjust(right=1.5, hspace=0.5)
  • 不确定图例问题。通常你可以做plt.plot(x, y, 'r', label = 'Red')。然后你会做plt.legend(loc='lower right')。如果我知道这些速度在哪里被引用,我可以提供更多帮助,但我在代码和你的图中都没有看到它们。
  • @wflynny 删除该行就可以了。我想我从另一个用来绘制数据的函数中复制并粘贴了那条线。谢谢!顺便说一句,你能告诉我如何添加图例吗?
  • @wflynny 这可能有点矫枉过正。只需在某处放置带有这些行的text box 就足够了。 subplot.text(0.99,0.99, "1. Speed limit (20km/h)\n2. Speed limit (30km/h)", transform=subplot.transAxes, ha="right", va="top", fontsize=8, bbox={'facecolor':'w', 'alpha':0.5, 'pad':10})(行可以用\n分隔)

标签: python image matplotlib subplot


【解决方案1】:

从我的代码中删除以下行修复了截止问题:

figure.subplots_adjust(right=1.5, hspace=0.5)

此外,就注释情节而言,使用text box 起到了作用。再次感谢 @wflynny 和 @ImportanceOfBeingEarnest 的反馈

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 2020-08-09
    相关资源
    最近更新 更多