plt绘图颜色渐变以及colormap
本文最后更新于 1762 天前,其中的信息可能已经有所发展或是发生改变。
# 多输出
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');

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)

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);

png

评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇