python plot 渐变颜色不显示_Matplotlib自定义渐变忽略颜色

问题是颜色是通过将最小值和最大值之间的范围等分来从颜色映射中选择的。由于大多数级别彼此非常接近,因此它们属于同一范围,因此具有相同的颜色。在

最简单的解决方案不是使用colormap,而是使用一个绘图,其中每个级别都从colorlist获取其颜色。在这种情况下,您可以直接向contourf图提供颜色列表。在plt.contourf(x,y,data,contour_levels,colors=diffmap_17)

注意,因为你有19个级别,你的列表需要18个颜色(因此我添加了一个)。在

^{pr2}$

yB7eh.png

如果您想改用colormap,则需要在colormap中提供一个规范化实例。matplotlib.colors.BoundaryNorm将根据提供给它的边界列表选择颜色,这将是等高线图的级别列表。在import matplotlib.pyplot as plt

import numpy as np

import matplotlib.colors

x, y= np.meshgrid(np.linspace(-3,3), np.linspace(-3,3))

r = np.sqrt(x**2+y**2)

data = np.tan((r*0.7-1.5))*1.3

diffmap_17 = ["#FF0000", "#F81318", "#F12731", "#EB3B4A", "#EB5C66", "#EB7D82",

"#EB9E9E", "#F1BEBE", "#F8DEDE", "#FFFFFF", "#DDDCFD", "#BCB9FB",

"#9B96FA", "#6A6CFA", "#3A43FA", "#1D21FC", "#0000FF", "#0000ce"]

diffmap_17_colormap = matplotlib.colors.ListedColormap(diffmap_17)

contour_levels = [-20, -10, -5, -2, -1, -0.75, -0.5, -0.25, -0.1, 0.0,

0.1, 0.25, 0.5, 0.75, 1, 2, 5, 10, 20]

norm = matplotlib.colors.BoundaryNorm(contour_levels, diffmap_17_colormap.N)

cs = plt.contourf(x,y,data,contour_levels,cmap=diffmap_17_colormap, norm=norm)

plt.colorbar(cs)

plt.show()

输出图同上。在

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值