Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matplotlib/python:如何拥有一个没有值的区域_Python_Matplotlib - Fatal编程技术网

matplotlib/python:如何拥有一个没有值的区域

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]

我的客户要求将折线图的值扩展到某个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]
        # 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