matplotlib/python:如何拥有一个没有值的区域
我的客户要求将折线图的值扩展到某个x轴,然后将1个x点保留为无值(空) 我设法添加了emty x空间,但值仍然显示,I-d需要线条在“7月13日之后”消失,填充停止的方式相同 以下是我目前的代码:matplotlib/python:如何拥有一个没有值的区域,python,matplotlib,Python,Matplotlib,我的客户要求将折线图的值扩展到某个x轴,然后将1个x点保留为无值(空) 我设法添加了emty x空间,但值仍然显示,I-d需要线条在“7月13日之后”消失,填充停止的方式相同 以下是我目前的代码: for i, val in enumerate(data): #data is an array with 3 elements, every elem has an array of y values in y[] linecolor = colors[i]
for i, val in enumerate(data):
#data is an array with 3 elements, every elem has an array of y values in y[]
linecolor = colors[i]
# y is a 2D array of values: [[1,2,3,4,5,0],[1,2,3,4,5,0],[1,2,3,4,5,0]]
ax.plot(x, y[i], '.-', label=doctor_names[i], markersize=8,fillstyle='full',linewidth=1.5, color=linecolor, clip_on=True, zorder=30)
ax.fill_between(x, 0, y[i], where=[True, True, True, True, True, False], color=WeeklyReviewChart.fillcolors[i], alpha=0.8, edgecolor="white", zorder=20)
通常,要使matplotlib不绘制值,请将其设置为
np.nan
。
例如,这对于绘制由于垂直渐近线而导致的换行非常有用
但是,如果您确实希望保留为空的绘图部分完全沿着左边距或右边距出现,那么您真正需要做的就是调用ax。set_xlim
以展开要绘制的区域:
ax.set_xlim(min(x), max(x)+DT.timedelta(days=7))
比如说,
import datetime as DT
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(2015)
x = [DT.date(2015,6,15)+DT.timedelta(days=i*7)
for i in range(5)]
y = np.random.randint(25, size=(3,5)).astype(float)
fig, ax = plt.subplots()
color = ['blue', 'green', 'red']
for i in range(3):
ax.plot(x, y[i], '.-', markersize=8, fillstyle='full', linewidth=1.5,
clip_on=True, zorder=30)
ax.fill_between(x, 0, y[i], alpha=0.5, color=color[i],
edgecolor="white", zorder=20)
ax.set_xlim(min(x), max(x)+DT.timedelta(days=7))
plt.show()
通常,要使matplotlib不绘制值,请将其设置为
np.nan
。
例如,这对于绘制由于垂直渐近线而导致的换行非常有用
但是,如果您确实希望保留为空的绘图部分完全沿着左边距或右边距出现,那么您真正需要做的就是调用ax。set_xlim
以展开要绘制的区域:
ax.set_xlim(min(x), max(x)+DT.timedelta(days=7))
比如说,
import datetime as DT
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(2015)
x = [DT.date(2015,6,15)+DT.timedelta(days=i*7)
for i in range(5)]
y = np.random.randint(25, size=(3,5)).astype(float)
fig, ax = plt.subplots()
color = ['blue', 'green', 'red']
for i in range(3):
ax.plot(x, y[i], '.-', markersize=8, fillstyle='full', linewidth=1.5,
clip_on=True, zorder=30)
ax.fill_between(x, 0, y[i], alpha=0.5, color=color[i],
edgecolor="white", zorder=20)
ax.set_xlim(min(x), max(x)+DT.timedelta(days=7))
plt.show()
这实际上将整个图表“缩小”为可见部分,即空部分消失了,我还缺少的是
ax.set\uxlim(min(x),max(x))
!非常感谢。事实上,再仔细想想,你真正需要的是ax.set\u xlim
——不需要设置值为NaN
。这实际上将整个图表“缩小”到可见部分,即空部分消失了,我还缺少的是ax.set\u xlim(min(x),max(x))
!非常感谢。事实上,仔细想想,您真正需要的是ax.set\u xlim
——不需要设置值为NaN
。