为了账号安全,请及时绑定邮箱和手机立即绑定

Matplotlib `fill_between` 填充菱形

Matplotlib `fill_between` 填充菱形

弑天下 2021-11-09 10:59:00
我目前正在尝试使用该matplotlib.pyplot.fill_between()方法在看起来像菱形的区域中着色。我目前正在使用fill_between()两次,但我想知道是否有办法仅使用该方法一次填充形状。请允许我详细说明。为了获得以下图像:我写的代码是这样的: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')# 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}$')# 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()只使用一次该方法来填充形状?
查看完整描述

1 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

由于您正在绘制多边形,请考虑绘制一个Polygon.


import numpy as np

import matplotlib.pyplot as plt


# 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}$')


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()

//img1.sycdn.imooc.com//6189e41d000161ad05780425.jpg

查看完整回答
反对 回复 2021-11-09
  • 1 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信