matplotlib 如何在整个地块上画一条垂直线?[副本]

pbgvytdp  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(115)

此问题在此处已有答案

How to draw vertical lines on a given plot(6个答案)
4天前关闭。
我有一个图,我想画一些垂直线,覆盖整个y轴范围,而不必担心该范围的数值。This matplotlib example演示了我正在寻找的功能,它对我来说工作得很好,但一个非常相似的代码却不能。我做错了什么?

from matplotlib import pyplot as plt
import numpy as np

np.random.seed(19680801)
y = np.random.normal(scale=0.01, size=200).cumsum()
fig, ax = plt.subplots(1, 2, figsize=(12, 6))
ax[0].plot(y)
ax[0].vlines([25, 50, 100], [0], [0.1, 0.2, 0.3], color='C1')
ax[1].plot(y)
ax[1].vlines([25, 50, 100], [0], [0.1, 0.2, 0.3], color='C1')
ax[1].vlines([0], 0, 1, color='k', linestyle='dashed',
    transform=ax[1].get_xaxis_transform())

字符串
预期:两个图具有相同的y限值
实际结果:右边的图有错误的界限


的数据
在Python 3.11.3上使用matplotlib 3.7.1。

tyky79it

tyky79it1#

将ymin和ymax设置为0和1。

from matplotlib import pyplot as plt
import numpy as np

np.random.seed(19680801)
y = np.random.normal(scale=0.01, size=200).cumsum()
fig, ax = plt.subplots(1, 2, figsize=(12, 6))
ax[0].plot(y)
ax[0].vlines([25, 50, 100], 0, 1, color='C1', 
  transform=ax[0].get_xaxis_transform())
ax[1].plot(y)
ax[1].vlines([25, 50, 100], 0, 1, color='C1', 
  transform=ax[1].get_xaxis_transform())
ax[1].vlines([0], 0, 1, color='k', linestyle='dashed', 
  transform=ax[1].get_xaxis_transform())

字符串
至于y限制,您可以使用以下命令设置它们:

ax[0].set_ylim([-0.05, 0.3])
ax[1].set_ylim([-0.05, 0.3])

相关问题