如何将 pylab.plot 行放在 pylab.figtext 之上?
How to put pylab.plot line over pylab.figtext?
我想要情节线覆盖文本。这是当前代码:
pylab.plot( data[:,0], data[:,1], color='red', lw=3, label='Temp' )
pylab.figtext(0.7, 0.5, round(temp1,2), color='white', fontsize=450,
bbox={'facecolor':'black', 'alpha':0.8, 'pad':12})
我使用了非常大的白色数字,红色绘图线被这些数字隐藏了。我只是想让绘图线位于数字之上。我尝试将 alpha=0.2 添加到 figtext 行,然后我可以看到绘图线,但白色数字和绘图线看起来都很暗淡。
使用 zorder
kwarg 控制什么交叉什么。
默认情况下,文本的 zorder
高于线条、图像和其他绘图特征(文本通常是标签,应该位于顶部)。
但是,还有一个问题。您目前正在使用 figtext
。这会将文本放置在图形级别而不是轴级别。您需要改用 plt.text
/ax.text
。如果你想像现在一样指定图形坐标中的位置,你可以传入 transform=fig.transFigure
.
这是默认情况下的示例:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10), color='red', lw=3)
# Placing the text in data coordinates...
ax.text(5, 5, 'Test', color='white', fontsize=45,
bbox={'facecolor':'black', 'pad':12})
plt.show()
下面是我们更改 zorder
时发生的情况(如果我没记错的话,文本的默认值为 3。任何大于或等于 4 的 zorder
会覆盖绘图中的任何文本对象.)
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10), color='red', lw=3, zorder=4)
# Placing the text in data coordinates...
ax.text(5, 5, 'Test', color='white', fontsize=45,
bbox={'facecolor':'black', 'pad':12})
plt.show()
但是,如果我们使用 plt.figtext
或 fig.text
(它们是相同的),文本将放置在图形级别而不是轴级别。因此,无论行的 zorder
是什么,文本仍将位于轴中任何内容的前面。
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10), color='red', lw=3, zorder=5000)
# Placing the text in figure coordinates
fig.text(0.5, 0.5, 'Test', color='white', fontsize=45,
bbox={'facecolor':'black', 'pad':12})
plt.show()
因此,如果你想使用图形坐标并且线条仍然在顶部,你应该使用 ax.text
或 ax.annotate
并指定 transform=fig.transFigure
以便你使用的坐标被解释为数字分数:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10), color='red', lw=3, zorder=4)
# Placing the text in figure coordinates
ax.text(0.5, 0.5, 'Test', color='white', fontsize=45, transform=fig.transFigure,
bbox={'facecolor':'black', 'pad':12})
plt.show()
我想要情节线覆盖文本。这是当前代码:
pylab.plot( data[:,0], data[:,1], color='red', lw=3, label='Temp' )
pylab.figtext(0.7, 0.5, round(temp1,2), color='white', fontsize=450,
bbox={'facecolor':'black', 'alpha':0.8, 'pad':12})
我使用了非常大的白色数字,红色绘图线被这些数字隐藏了。我只是想让绘图线位于数字之上。我尝试将 alpha=0.2 添加到 figtext 行,然后我可以看到绘图线,但白色数字和绘图线看起来都很暗淡。
使用 zorder
kwarg 控制什么交叉什么。
默认情况下,文本的 zorder
高于线条、图像和其他绘图特征(文本通常是标签,应该位于顶部)。
但是,还有一个问题。您目前正在使用 figtext
。这会将文本放置在图形级别而不是轴级别。您需要改用 plt.text
/ax.text
。如果你想像现在一样指定图形坐标中的位置,你可以传入 transform=fig.transFigure
.
这是默认情况下的示例:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10), color='red', lw=3)
# Placing the text in data coordinates...
ax.text(5, 5, 'Test', color='white', fontsize=45,
bbox={'facecolor':'black', 'pad':12})
plt.show()
下面是我们更改 zorder
时发生的情况(如果我没记错的话,文本的默认值为 3。任何大于或等于 4 的 zorder
会覆盖绘图中的任何文本对象.)
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10), color='red', lw=3, zorder=4)
# Placing the text in data coordinates...
ax.text(5, 5, 'Test', color='white', fontsize=45,
bbox={'facecolor':'black', 'pad':12})
plt.show()
但是,如果我们使用 plt.figtext
或 fig.text
(它们是相同的),文本将放置在图形级别而不是轴级别。因此,无论行的 zorder
是什么,文本仍将位于轴中任何内容的前面。
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10), color='red', lw=3, zorder=5000)
# Placing the text in figure coordinates
fig.text(0.5, 0.5, 'Test', color='white', fontsize=45,
bbox={'facecolor':'black', 'pad':12})
plt.show()
因此,如果你想使用图形坐标并且线条仍然在顶部,你应该使用 ax.text
或 ax.annotate
并指定 transform=fig.transFigure
以便你使用的坐标被解释为数字分数:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10), color='red', lw=3, zorder=4)
# Placing the text in figure coordinates
ax.text(0.5, 0.5, 'Test', color='white', fontsize=45, transform=fig.transFigure,
bbox={'facecolor':'black', 'pad':12})
plt.show()