python画图渐变颜色的代号_plt绘图颜色渐变以及colormap

# 多输出

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

有时想让绘的图更加花样些,比如让图中的颜色和当前的坐标数值有关系。下面开始实现这个渐变效果吧。

导入模块以及绘图中使用的 (x, y)

import numpy as np

import matplotlib.pyplot as plt

from matplotlib import cm

from matplotlib.collections import LineCollection

%matplotlib inline

n = 10

x = np.arange(0, n, step=.5)

y = x ** 2

# y 的值归一化到[0, 1]

# 因为 y 大到一定程度超过临界数值后颜色就会饱和不变(不使用循环colormap)。

norm = plt.Normalize(y.min(), y.max())

# matplotlib.colors.Normalize 对象,可以作为参数传入到绘图方法里

# 也可给其传入数值直接计算归一化的结果

norm_y = norm(y)

1. 散点图颜色渐变

这个颜色渐变最简单,plt.scatter 可以接收参数 c , c 是一维的数值(与坐标点数量相同), 它会将这单个的数值映射成 rgb 色彩值.

官方例子: scatter demo

plt.scatter(x, y, c=norm_y, cmap='viridis');

output_4_0.png

2. 条形图颜色渐变与colormap

plt.bar 的参数 color 可以接收一组颜色,用于给每个柱子上色。所以实现颜色渐变只需要将当前的纵坐标值映射成 rgb 颜色

使用 cm(colormap) 可以完成单值到 rgb 的映射。具体做法是 cm.get_cmap() 拿到想要的 colormap,然后给其传入数值就会返回 rgb。

可用的 colormap 以及方法见官方文档 colormaps

map_vir = cm.get_cmap(name='viridis')

# name 参数用来选择使用哪个 colormap, 可选的见上面官方链接

# lut 参数推荐不要设置。是用来定义生成的 colormap 的长度也就是 map_vir 的长度

# 如果 colormap 的长度小于绘图坐标 y 的长度,那程序就会将多个 y 的颜色设置成一样。

color = map_vir(norm_y)

ax = plt.bar(x, y, color=color)

output_6_0.png

3. 线条图颜色渐变

plt.plot 的参数 color 只能接收 rgb 色彩值,且接收的的颜色是整条线的颜色,要实现线条上的颜色渐变不能使用 plot,使用LineCollection, 此方法较难,详见官方文档。

官方例子: plot multicolored_line

points = np.array([x, y]).T.reshape(-1, 1, 2)

segments = np.concatenate([points[:-1], points[1:]], axis=1)

fig, axs = plt.subplots()

lc = LineCollection(segments, cmap='viridis')

# Set the values used for colormapping

lc.set_array(norm_y)

line = axs.add_collection(lc)

axs.set_xlim(x.min(), x.max());

axs.set_ylim(y.min() - 1, y.max() + 1);

output_8_0.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值