답변:
실제 높이를 지정하지 않고 전체 플롯 창을 덮을 수직선을 추가하는 표준 방법은 다음과 같습니다. plt.axvline
import matplotlib.pyplot as plt
plt.axvline(x=0.22058956)
plt.axvline(x=0.33088437)
plt.axvline(x=2.20589566)
또는
xcoords = [0.22058956, 0.33088437, 2.20589566]
for xc in xcoords:
plt.axvline(x=xc)
당신은 다른 플롯 명령에 사용할 수있는 키워드의 대부분을 사용할 수 있습니다 (예를 들어 color
, linestyle
, linewidth
...). 당신은 키워드 인수를 전달할 수 있습니다 ymin
그리고 ymax
당신은 축 corrdinates에 좋아하는 경우 (예를 들어 ymin=0.25
, ymax=0.75
플롯의 중간 반을 다룰 것입니다). 수평선 ( axhline
) 및 사각형 ( axvspan
)에 해당하는 기능이 있습니다 .
ax
이 객체라면 ax.axvline(x=0.220589956)
나를 위해 일하는 것 같습니다.
plt.plot((x1,x2),(y1,y2))
여러 줄
xposition = [0.3, 0.4, 0.45]
for xc in xposition:
plt.axvline(x=xc, color='k', linestyle='--')
label='label'
이 작동하지만 plt.legend([options])
나중에 전화해야합니다
legend
및 / 또는 colors
일부 수직선 을 추가 하려면 다음을 사용하십시오.import matplotlib.pyplot as plt
# x coordinates for the lines
xcoords = [0.1, 0.3, 0.5]
# colors for the lines
colors = ['r','k','b']
for xc,c in zip(xcoords,colors):
plt.axvline(x=xc, label='line at x = {}'.format(xc), c=c)
plt.legend()
plt.show()
결과 :
다른 사람들이 제안했듯이 루프에서 axvline을 호출하면 작동하지만 불편 할 수 있습니다.
대신 모든 선을 단일 플롯 객체로 만드는 다음 편의 기능을 사용할 수 있습니다.
import matplotlib.pyplot as plt
import numpy as np
def axhlines(ys, ax=None, **plot_kwargs):
"""
Draw horizontal lines across plot
:param ys: A scalar, list, or 1D array of vertical offsets
:param ax: The axis (or none to use gca)
:param plot_kwargs: Keyword arguments to be passed to plot
:return: The plot object corresponding to the lines.
"""
if ax is None:
ax = plt.gca()
ys = np.array((ys, ) if np.isscalar(ys) else ys, copy=False)
lims = ax.get_xlim()
y_points = np.repeat(ys[:, None], repeats=3, axis=1).flatten()
x_points = np.repeat(np.array(lims + (np.nan, ))[None, :], repeats=len(ys), axis=0).flatten()
plot = ax.plot(x_points, y_points, scalex = False, **plot_kwargs)
return plot
def axvlines(xs, ax=None, **plot_kwargs):
"""
Draw vertical lines on plot
:param xs: A scalar, list, or 1D array of horizontal offsets
:param ax: The axis (or none to use gca)
:param plot_kwargs: Keyword arguments to be passed to plot
:return: The plot object corresponding to the lines.
"""
if ax is None:
ax = plt.gca()
xs = np.array((xs, ) if np.isscalar(xs) else xs, copy=False)
lims = ax.get_ylim()
x_points = np.repeat(xs[:, None], repeats=3, axis=1).flatten()
y_points = np.repeat(np.array(lims + (np.nan, ))[None, :], repeats=len(xs), axis=0).flatten()
plot = ax.plot(x_points, y_points, scaley = False, **plot_kwargs)
return plot