Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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
Python 如何在matplotlib中屏蔽线的一部分_Python_Numpy_Matplotlib_Python Imaging Library_Drawing - Fatal编程技术网

Python 如何在matplotlib中屏蔽线的一部分

Python 如何在matplotlib中屏蔽线的一部分,python,numpy,matplotlib,python-imaging-library,drawing,Python,Numpy,Matplotlib,Python Imaging Library,Drawing,我使用python中的matplotlib绘制了一些线条: from PIL import Image import matplotlib.pyplot as plt import numpy as np fig_axes = (-100, 100, -50, 80) x_range = (-800, 800, 33) orig = (0,5) x = np.linspace(x_range[0], x_range[1], x_range[2]) fig = plt.figure(figsi

我使用python中的matplotlib绘制了一些线条:

from PIL import Image
import matplotlib.pyplot as plt
import numpy as np

fig_axes = (-100, 100, -50, 80)
x_range = (-800, 800, 33)
orig = (0,5)
x = np.linspace(x_range[0], x_range[1], x_range[2])

fig = plt.figure(figsize=(15, 9))

ax = fig.add_subplot(1,1,1)
ax.set_facecolor('black')
ax.axis([fig_axes[0], fig_axes[1], fig_axes[2], fig_axes[3]])


for i in x:
    ax.plot((orig[0], i), (orig[1], fig_axes[2]), 'r', linewidth=1.5)

plt.show()
然后我得到这样的图像:

现在我想隐藏图形上0以上的所有部分。我听说了

numpy.ma.masked_在哪里

但是我没有数组,所以我不能使用它

你知道我怎么做吗

我想要这样的东西:


谢谢

画一个长方形来遮盖

import matplotlib.patches as patches
rect = patches.Rectangle((-100,0),200,80,facecolor='black',fill=True,zorder=20)
ax.add_patch(rect)

或重新计算结束点,应为基本几何图形

您可以在直线上设置矩形剪辑路径:

from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patches as mp

fig_axes = (-100, 100, -50, 80)
x_range = (-800, 800, 33)
orig = (0,5)
x = np.linspace(x_range[0], x_range[1], x_range[2])

fig = plt.figure(figsize=(15, 9))

ax = fig.add_subplot(1,1,1)
ax.set_facecolor('black')
ax.axis([fig_axes[0], fig_axes[1], fig_axes[2], fig_axes[3]])

r = mp.Rectangle((fig_axes[0],fig_axes[2]), fig_axes[1]-fig_axes[0], 0-fig_axes[2], transform=ax.transData)
for i in x:
    l = ax.plot((orig[0], i), (orig[1], fig_axes[2]), 'r', linewidth=1.5)
    l[0].set_clip_path(r)

因此,正如评论中所要求的,我在上面画了一个矩形,上面有:

ax.add_patch(ptc.Rectangle((fig_axes[0], 0), (fig_axes[1]-fig_axes[0]), (orig[1]+5), fc ='black', zorder = 3))

@秉旺这正是我所做的,但我认为有一种更干净的方法可以做到这一点