Skip to main content

Color Beyond Matplotlib

Project description

colorbm

Color Beyond Matplotlib:提供matplotlib 之外的色彩图(Colormap)以及色板(Color Palette),仅此而已。

主要用于使用matplotlib进行科技论文配图的绘制。 colorbm提供三类色彩图或色板(色彩图包含diverging和sequential两类):

  1. diverging 色彩图:此类色彩图适合绘制需要突出数值正负区别的图片,或者数值大小之间有明显的分界线
  2. sequential 色彩图:此类色彩图具有连续的色彩变化,适合绘制数值连续变化(Continuous Data)的图片
  3. palettes 色板:顾名思义,色板是不同颜色的集合,适合绘制分类数据(Categorical Data)以及离散数据(Discrete Data)

所有彩色图以及色板均从网络收集,包括或不仅限于以下图集:

版本变动

20201009:

  • 🐛 修正使用d3_10时发生的小错误
  • 🐛 修正无法输出色板颜色至xml文件
  • 增加wesanderson色版,来自Wes Anderson所导演的电影。来源网站

20200930:

  • 添加colorcet颜色分类,具体颜色可查询网站

20200924:

  • 增加了pal类,现在导入色板与色彩图有同样的操作
  • 增加了输出颜色至xmlcsv格式文件,可以用于导入至paraview软件;
  • 色板中增加了nintendo分类,包括marioluigiyoshiisabelle以及tomnook 五个色板

20200923:

  • 增加了色彩图
  • 增加了预览色彩图以及色板的功能
  • 增加了输出色彩图以及色板名称的功能
  • 增加pip安装选项
  • 增加了色彩图:turbo(Google AI Lab)以及parula(MATLAB默认色彩图)

20200922:增加来自世界名画 的色板以及《经济学人》杂志色板

使用说明

安装

使用pip进行安装:

pip install colorbm

在国内网络环境可以通过pypi镜像进行安装,例如:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple colorbm

如果使用anaconda发行版,可切换至需要安装的虚拟环境,再使用pip进行安装:

conda activate myenv
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple colorbm

安装测试

import colorbm as cbm

cbm.pcolor('crest').show()

如果安装成功便可输出类似下方图片。

输入图片说明

色彩图与色板名称说明

为了输入方便,所有的色彩图与色板名称均采用小写字母

色板的使用

调用pal()类以使用色板,该类下面有4种方法:

  • as_cmap :此方法返回Colormap object
  • as_cmap_r:此方法返回反向颜色的色板
  • as_hex :此方法返回所选色板颜色的HEX列表
  • as_rgb: 此方法返回所选色板颜色的RGB列表

这四种方法定义时加上了属性(property)装饰器,调用时不用加括号。
例如: cbm.pal('mario').as_cmap,将返回通过 mario 色板创建的 Colormap object

实例:将所选择色板赋值于matplotlibcmap参数 下例中调用npg 色板

import numpy as np
import matplotlib.pyplot as plt
import colorbm as cbm

plt.rcParams['scatter.edgecolors'] = 000000

np.random.seed(19680801)
N = 50
x = np.random.rand(N)
y = np.random.rand(N)

fig, ax = plt.subplots()
colors = np.random.rand(N)
area = (30 * np.random.rand(N)) ** 2  # 0 to 15 point radii

ax.scatter(x, y, s=area, c=colors, alpha=0.5, cmap=cbm.pal('npg').as_cmap)
plt.show()

输入图片说明

此外,也可将颜色的HEX列表用于seaborn

import matplotlib.pyplot as plt
import seaborn as sns
import colorbm as cbm

sns.set_palette(sns.color_palette(cbm.pal('npg').as_hex))

# Load the penguins dataset
penguins = sns.load_dataset("penguins")

# Plot sepal width as a function of sepal_length across days
g = sns.lmplot(
    data=penguins,
    x="bill_length_mm", y="bill_depth_mm", hue="species",
    height=5
)

plt.show()

输入图片说明

色彩图的使用

调用seq()div() 类以使用色彩图,这两类分别对应 sequentialdiverging 色彩图 这两类同样有四种方法:

  • as_cmap :此方法返回Colormap object
  • as_cmap_r:此方法返回反向色彩图
  • as_hex :此方法返回所选色板颜色的HEX列表
  • as_rgb: 此方法返回所选色板颜色的RGB列表

例如:
cbm.seq('burg').as_cmap :使用连续色彩图burg
cbm.div('vlag').as_cmap :使用离散色彩图vlag
cbm.seq('burg').as_cmap_r :使用可以反转的burg色彩图。

此外,还可以确定离散颜色的个数,例如: cbm.seq('burg', 10).as_cmap。这将从色彩图中通过均匀抽样取得10种颜色。下方是5种与10种离散颜色的区别:

输入图片说明

实例:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

import colorbm as cbm

X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cbm.seq('burg', 50).as_cmap)

plt.show()

输入图片说明

色彩图与色板的测试

调用pcolor类对已有色彩图与色板进行测试,此类下方有三种方法:

  • show() :会临时显示一幅使用该色板的图像。例如:cbm.pcolor('flare').show();或者使用 cbm.pcolor('flare').show(reversed=True) 获得反转色彩图。也可以确定离散颜色的个数,例如 cbm.pcolor('flare', 50).show()
  • to_xml():输出paraview使用的色彩图xml文件,对色板无效。需要输入保存文件路径以及文件名(如果没有参数输入,默认路径为当前路径,文件名为色彩图名称)。例如: cbm.pcolor('flare').to_xml(wd=myDir, filename=myName)
  • to_csv():默认输出色彩图以及色板中颜色的RGB列表至csv文件(如果没有参数输入,默认路径为当前路径,文件名为色彩图名称,保存格式为rgb列表)。也可以设置输出HEX列表,例如cbm.pcolor('flare').to_csv(wd=myDir, filename=myName, fmt='hex')

通过色彩图与色板方案查询色彩图或色板名称

print(cbm.available_palettes().get) :输出所有色板的名称。 print(cbm.available_palettes('nintendo').get) :输出特定色板方案中有的色板名称

现色板方案有:ggsci, paintings, carto, miscnintendo

print(cbm.available_colormaps().all) :输出所有色彩图的名称
print(cbm.available_colormaps('carto').all) :输出某个色彩图方案中所有色彩图的名称
print(cbm.available_colormaps().div) :输出所有离散色彩图的名称
print(cbm.available_colormaps().seq) :输出所有连续色彩图的名称
print(cbm.available_colormaps('carto').div) :输出某个色彩图方案中所有离散色彩图的名称
print(cbm.available_colormaps('carto').seq) :输出某个色彩图方案中所有离散色彩图的名称

现色彩图方案有:seaborncartoscientificcmashercmoceanmiscmat

包含的色彩图以及色板

色彩图

seaborn

输入图片说明

carto

输入图片说明

cmoceam

输入图片说明

scientific

输入图片说明

cmasher

输入图片说明

mat (Material Design)

misc

色板

carto

输入图片说明

  • antique
  • bold
  • pastel
  • prism
  • safe
  • vivid

ggsci

具体颜色可查询ggsci网站

  • npg:自然出版集团出版杂志所用色板(Nature系列杂志)
  • aaas:美国科学促进会出版杂志所用色板(Science系列杂志)
  • nejm: 新英格兰医学杂志所用色板
  • lancet:柳叶刀杂志所用色板
  • jama:美国医学会杂志所用色板
  • jco: 临床肿瘤学杂志所用色板
  • ucscgb: 基因组浏览器用于染色体可视化的色板
  • d3: JavaScript程序库D3.js所用色板,有四个分类: d3_10d3_20d3_20b以及 d3_20c
  • locuszoom: LocusZoom图所用色板
  • igvIGV软件所用色板,有两个分类可用:igv以及igv_alternative
  • uchicago: 芝加哥大学所用色板,有三个分类可用:uchicagouchicago_light以及uchicago_dark
  • startrek: 《星际迷航》系列影片所用色板
  • tron: 《创:战纪》影片所用色板,其背景颜色较暗
  • futurama: 《飞出个未来》电视剧所用色板
  • rickandmorty: 《瑞克和莫蒂》电视剧所用色板
  • simpsons: 《辛普森一家》电视剧所用色板

paintings

具体颜色可查询网站

  • starrynight:来自梵高的名画《星夜》
  • monalisa:来自达芬奇的名画《蒙娜丽莎》
  • scream:来自蒙克的名画《呐喊》
  • lastsupper:来自达芬奇的名画《最后的晚餐》
  • afternoon:来自修拉的名画《大碗岛的星期天下午》
  • optometrist:来自洛克威尔的名画《验光师》
  • kanagawa:来自葛饰北斋的名画《神奈川冲浪里》
  • kiss:来自克里姆特的名画《吻》
  • memory:来自达利的名画《《持续的记忆》
  • lilies:来自莫奈的名画《睡莲》

wesanderson

来自Wes Anderson所导演的电影,包含以下色板

  • bottlerocket1
  • bottlerocket2
  • rushmore1
  • rushmore2
  • royal1
  • royal2
  • rissou
  • darjeeling1
  • darjeeling2
  • chevalier
  • fantasticfox
  • moonrise1
  • moonrise2
  • moonrise3
  • cavalcanti
  • grandbudapest1
  • grandbudapest2
  • isleofdogs1
  • isleofdogs2

misc

包含以下色板

  • economist: 经济学人杂志所用色板,有三个分类:economisteconomist_primary以及economist_alternative

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

colorbm-2.0.7.tar.gz (730.8 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page