【问题标题】:Mathplotlib draw triangle with gradient fillMatplotlib 用渐变填充绘制三角形
【发布时间】:2017-02-06 08:43:27
【问题描述】:

我必须使用 mathplotlib 在 Python 中绘制一个三角形。
This 最终应该是这样的:

我的目标是,一旦绘制了三角形,就在其上绘制一些点。

目前我可以很好地绘制三角形:

import matplotlib.pyplot as plt 
from matplotlib.patches import Polygon 
fig = plt.figure() 
ax = fig.add_subplot(111, aspect='equal') 
ax.add_patch(Polygon([[0,0],[0,1],[1,0]], closed=True,fill=True)) 
ax.set_xlim((0,1)) 
ax.set_ylim((0,1)) 
plt.show()

但我只能用纯色填充它。如何添加如图所示的渐变?

有人可以帮我吗?

【问题讨论】:

  • 这是家庭作业吗?你有没有尝试过什么?其他示例和解决方案在多大程度上对您没有帮助?问题与三角形或点或填充有关吗?请更具体并添加您已有的代码,以便我们知道在哪里可以帮助您。
  • 您的编辑完美地反映了我正在寻找的内容。谢谢

标签: python matplotlib polygon


【解决方案1】:

有一个example on the matplotlib page 展示了如何为图像使用剪辑路径。
将此适应您的情况将给出:

import matplotlib.pyplot as plt 
import numpy as np
from matplotlib.path import Path
from matplotlib.patches import PathPatch


fig = plt.figure() 
ax = fig.add_subplot(111, aspect='equal') 
path = Path([[0,0],[0,1],[1,0],[0,0]])
patch = PathPatch(path, facecolor='none')
ax.add_patch(patch) 
Z, Z2 = np.meshgrid(np.linspace(0,1), np.linspace(0,1))
im = plt.imshow(Z-Z2, interpolation='bilinear', cmap=plt.cm.RdYlGn,
                origin='lower', extent=[0, 1, 0, 1],
                clip_path=patch, clip_on=True)
im.set_clip_path(patch)
ax.set_xlim((0,1)) 
ax.set_ylim((0,1)) 
plt.show()

【讨论】:

  • 太棒了!非常感谢!如果我理解得很好,我现在必须创建正确的颜色图。
  • 如果here 列出的颜色图都不适合您,您可能需要创建一个新颜色图。这应该很容易,如果它只有 3 或 4 种颜色,例如like this.
  • 非常好的结果!是否可以旋转剪切的补丁?
猜你喜欢
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 2021-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多