如何用彩色贴图填充曲线和原始边之间的区域?

2024-09-25 16:31:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个坐标为X,Y的数据,类似于垂直正弦函数,我想用matplot上的colormap填充左边缘和使用可变颜色生成的曲线之间的区域,颜色的变化以X值作为图像(从蓝色到红色)。我试着得到这样一个结果,起点和终点被一条线连接起来。我需要填充左边的区域

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

#Data
y=np.arange(0,10,0.01)
x=np.sin(y)*y+2
    
#Set Array
xx=np.asarray(x)
yy=np.asarray(y)
    
path = Path(np.array([xx,yy]).transpose())
patch = PathPatch(path, facecolor='none')
plt.gca().add_patch(patch)
    
im = plt.imshow(xx.reshape(yy.size,1),  cmap=plt.cm.coolwarm,interpolation="nearest",
                    origin='left',extent=[-5,10,0,10],aspect="auto", clip_path=patch, clip_on=True)
im.set_clip_path(patch)

Plot 1


Tags: pathfromimport区域clipmatplotlib颜色as
1条回答
网友
1楼 · 发布于 2024-09-25 16:31:42

可以在y轴上添加两个附加点以创建所需形状:

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

y = np.linspace(0, 10, 200)
x = np.sin(y) * y + 2

path = Path(np.array([np.append(x, [-5, -5]), np.append(y, [y[-1], y[0]])]).T)
patch = PathPatch(path, facecolor='none')
plt.gca().add_patch(patch)

im = plt.imshow(x.reshape(y.size, 1), cmap=plt.cm.coolwarm, interpolation="nearest",
                origin='lower', extent=[-5, 10, 0, 10], aspect="auto", clip_path=patch, clip_on=True)
plt.show()

example plot

相关问题 更多 >