【问题标题】:How to draw rectangle outside of the plot frame in Matplotlib如何在 Matplotlib 中的图框外绘制矩形
【发布时间】:2017-05-19 01:29:24
【问题描述】:

我想按照图的样式生成子图的标题:

在散点顶部的标题下方应有一个灰色框。

这是我尝试过的代码:

x = random.sample(range(50), 50)
y= random.sample(range(50), 50)

fig = pyplot.figure()
ax = pyplot.subplot(111)
ax.scatter(x,y,label='a')
ax.set_aspect('equal')
ax.set_xlim(0,60)
ax.set_ylim(0,60)
ax.plot([0,60], [0, 60], color='k', linestyle='-', linewidth=1.25)

ax.add_patch(patches.Rectangle((0,60),60, 10,facecolor='silver',linewidth = 0))
TITLE = ax.text(26,61, r'$\mathregular{Title}$',fontsize = 14,zorder = 5,color = 'k')

结果显示如下:

作为标题背景框的矩形无法显示在我的结果中

感谢任何建议或更好的解决方案!

【问题讨论】:

  • 这是一个“盲目”的尝试。如果 10 是正高度,为什么不以 (0,50) 为原点?

标签: python python-2.7 matplotlib visualization


【解决方案1】:

我认为更好的方法是为Rectangle 使用 clip_on=False 选项:

import random
import matplotlib.pyplot as pyplot

x = random.sample(range(50), 50)
y= random.sample(range(50), 50)

fig = pyplot.figure()
ax = pyplot.subplot(111)
ax.scatter(x,y,label='a')
ax.set_aspect('equal')
ax.set_xlim(0,60)
ax.set_ylim(0,60)
ax.plot([0,60], [0, 60], color='k', linestyle='-', linewidth=1.25)

ax.add_patch(pyplot.Rectangle((0,60),60, 10,facecolor='silver',
                              clip_on=False,linewidth = 0))
TITLE = ax.text(26,61, r'$\mathregular{Title}$',fontsize = 14,zorder = 5,
                color = 'k')
pyplot.show()

这会产生一个在坐标轴之外绘制的矩形,而无需使用额外的空格:

【讨论】:

    【解决方案2】:

    删除这一行:

    ax.add_patch(patches.Rectangle((0,60),60, 10,facecolor='silver',linewidth = 0))
    

    并通过添加bbox来更改最后一行:

    TITLE = ax.text(26,62, 'Title',fontsize = 14,zorder = 6, color = 'k',
                    bbox={'facecolor':'silver', 'alpha':0.5, 'pad':4})
    

    我发现给它任意长度的唯一方法是添加空格。

    TITLE = ax.text(1,62, '                     Title                    ',
                    fontsize = 14,zorder = 6,color = 'k', 
                    bbox={'facecolor':'silver', 'alpha':0.5, 'pad':4})
    

    有关 bbox 的更多信息,请参阅 SO 中的this question

    【讨论】:

      猜你喜欢
      • 2016-09-22
      • 1970-01-01
      • 2018-01-17
      • 2022-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      相关资源
      最近更新 更多