python加粗线宽代码_python-在matplotlib中同时更改线宽和颜色

用作灵感another question.

一种选择是使用fill_between.但是,可能并非如预期的那样.与其使用它来创建行,不如使用它来掩盖所有不是该行的内容.在它的下面,您可以具有pcolormesh或outlinef(例如)以任何方式映射颜色.

例如,看这个例子:

import matplotlib.pyplot as plt

import numpy as np

from scipy.interpolate import interp1d

def windline(x,y,deviation,color):

y1 = y-deviation/2

y2 = y+deviation/2

tol = (y2.max()-y1.min())*0.05

X, Y = np.meshgrid(np.linspace(x.min(), x.max(), 100), np.linspace(y1.min()-tol, y2.max()+tol, 100))

Z = X.copy()

for i in range(Z.shape[0]):

Z[i,:] = c

#plt.pcolormesh(X, Y, Z)

plt.contourf(X, Y, Z, cmap='seismic')

plt.fill_between(x, y2, y2=np.ones(x.shape)*(y2.max()+tol), color='w')

plt.fill_between(x, np.ones(x.shape) * (y1.min() - tol), y2=y1, color='w')

plt.xlim(x.min(), x.max())

plt.ylim(y1.min()-tol, y2.max()+tol)

plt.show()

x = np.arange(100)

yo = np.random.randint(20, 60, 21)

y = interp1d(np.arange(0, 101, 5), yo, kind='cubic')(x)

dv = np.random.randint(2, 10, 21)

d = interp1d(np.arange(0, 101, 5), dv, kind='cubic')(x)

co = np.random.randint(20, 60, 21)

c = interp1d(np.arange(0, 101, 5), co, kind='cubic')(x)

windline(x, y, d, c)

,结果如下:

windline函数接受带有x,y的numpy数组,一个偏差(例如每个x值的厚度值)和用于颜色映射的颜色数组作为参数.我认为可以通过将其他细节弄乱来极大地改善它,但是该原理虽然不够完善,但应该是牢固的.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值