Matplotlib `fill_between` 填充菱形

我目前正在尝试使用该matplotlib.pyplot.fill_between()方法在看起来像菱形的区域中着色。

我目前正在使用fill_between()两次,但我想知道是否有办法仅使用该方法一次填充形状。请允许我详细说明。

为了获得以下图像:

http://img1.mukewang.com/6189e4070001901606040544.jpg

我写的代码是这样的:


import matplotlib.pyplot as plt


# Fill in area.

plt.fill_between([0, 1, 4], [0, 1, 4], [0, 3, 4], color='C2', label=r'$c\vec{v} + d\vec{w}$')

plt.fill_between([0, 3, 4], [0, 3, 4], [0, 1, 4], color='C2')


# v

plt.quiver(0, 0, 3, 1, color='C0', angles='xy', scale_units='xy', scale=1, label=r'$\vec{v}$')


# w

plt.quiver(0, 0, 1, 3, color='C1', angles='xy', scale_units='xy', scale=1, label=r'$\vec{w}$')


# Miscellaneous.

plt.xlim(-1, 6)

plt.ylim(-1, 6)

plt.axhline(0, color='black')

plt.axvline(0, color='black')

plt.xlabel(r'$x$', fontsize='large')

plt.ylabel(r'$y$', fontsize='large')

plt.grid()

plt.legend()

plt.show()

有没有办法fill_between()只使用一次该方法来填充形状?


弑天下
浏览 208回答 1
1回答

慕妹3146593

由于您正在绘制多边形,请考虑绘制一个Polygon.import numpy as npimport matplotlib.pyplot as plt# vplt.quiver(0, 0, 3, 1, color='C0', angles='xy', scale_units='xy', scale=1, label=r'$\vec{v}$')# wplt.quiver(0, 0, 1, 3, color='C1', angles='xy', scale_units='xy', scale=1, label=r'$\vec{w}$')verts = [0,3,4,1,0]poly = plt.Polygon(np.c_[verts,verts[::-1]], color="C2", zorder=0,                   label=r'$c\vec{v} + d\vec{w}$')plt.gca().add_patch(poly)# Miscellaneous.plt.autoscale()plt.margins(.2)plt.grid()plt.legend(loc="upper left")plt.show()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python