内容包括:色图、matplotlib、seaborn、mayavi、traits、traitsUI、movepy 等。
所谓RGB空间就是red,green和blue颜色3个向量张成的空间,正好类似于3维欧氏空间。
3个向量均归一化了,其中(0,0,0)处为黑色,(1,1,1)处为白色。这种映射关系和光学棱镜色散和叠加相对应。
简单的例子:RGB空间(1,0,0)为纯红色,(0,0,1)为纯蓝色。
实际应用常用的比重数值范围也可以将[0,1]编码映射到[0, 255]区间。
颜色原理参见:
https://www.cnblogs.com/yxnchinahlj/archive/2011/03/04/1970735.html
色图即颜色系统,定义了一种颜色序列,是一个M*3的实数矩阵,每一行是定义一种颜色的一个RGB向量,3列分别是红、绿、蓝的比重。颜色图的第m行定义第m种颜色。
不同色图从起始到结束的颜色序列如下图。
更多色图参见:
http://scipy.github.io/old-wiki/pages/Cookbook/Matplotlib/Show_colormaps
jet色图:
jet格式的色图,起始(索引最小值)为蓝色,结束(索引最大值)为红色,过渡色为绿、黄色。
https://ww2.mathworks.cn/help/matlab/ref/jet.html
例如m=8时的jet颜色序列值如下:
%matlab
K>> jet(8)
ans =
0 0 1.0000
0 0.5000 1.0000
0 1.0000 1.0000
0.5000 1.0000 0.5000
1.0000 1.0000 0
1.0000 0.5000 0
1.0000 0 0
0.5000 0 0
husl色图:
人对颜色的感知并非线性的,对黄色和绿色更敏感,会认为它们更亮一点,而认为蓝色更暗一点。HUSL色彩系统针对这个情况做了一些调整。
HLS:
HUSL:
HSV和HLS:
HSV 颜色空间(色调、饱和度和值)
HLS 空间(色调、亮度和饱和度)
HSV 和 HLS颜色空间:https://www.cnblogs.com/fuhang/p/9175901.html
HSV:
HUSL、HLS、HSV简单理解:
三者的色调(基色)相同,饱和度、亮度的规定不同。
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html
自定义色图
官网解释:https://matplotlib.org/api/_as_gen/matplotlib.colors.LinearSegmentedColormap.html
例程:https://www.programcreek.com/python/example/93865/matplotlib.colors.LinearSegmentedColormap.from_list
fig = plt.figure() ax = fig.gca(projection='3d') ax.axis('equal')
对于3D图形,这句ax = fig.gca(projection='3d')一定要加上参数,且需要在plot前执行,否则没有效果。
加上3D参数的效果:3个axis是垂直的。
不加3D参数的效果:怎么看怎么不对。
使用以下语句时,有时会使z轴也等刻度,且等刻度后,各坐标轴的长度会相差较大,根据效果适当使用。
plt.gca().set_aspect('equal', adjustable='box')
原文见:https://blog.csdn.net/helunqu2017/article/details/78650339
摘要如下:
删格操作
打开栅格:plt.grid(true)
设置栅格格式:plt.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
坐标轴操作:
ax.spines['top'].set_visible(False) #去掉上边框
ax.spines['bottom'].set_visible(False) #去掉下边框
ax.spines['left'].set_visible(False) #去掉左边框
ax.spines['right'].set_visible(False) #去掉右边框
背景色操作:
(1)设置figure背景颜色
facecolor:背景颜色 edgecolor:边框颜色
plt.figure(facecolor='blue',edgecolor='black')
或
fig=plt.gcf()
fig.set_facecolor('green')
或
fig = plt.figure() ax = fig.gca() ax.set_facecolor('black')
(2)设置axes背景颜色
a = plt.axes([.65, .6, .2, .2], facecolor='k') #pyplot api命令-黑色背景
或者
ax1=plt.gca()
ax1.patch.set_facecolor("gray") #设置ax1区域背景颜色
ax1.patch.set_alpha(0.5) #设置ax1区域背景颜色透明度
https://blog.csdn.net/m0_37393514/article/details/81298503
from
matplotlib.animation
import
FuncAnimation
网上例程较多。略。
清空figure,并且可以设置保持原有的观察视角。
f = plt.figure()
...
f.clf(keep_observers=True) # 默认False
Set *keep_observers* to True if, for example,
a gui widget is tracking the axes in the figure.
设置视角保持,如果观察时已经旋转过,则clf后不会把视角复位。
重新画一帧时,不需要重新调整视角。
1)3D显示时,无法设置zlabel。
2)3D显示时,坐标范围经常未覆盖所要显示的图形,导致看起来像是一片空白,需要手动调整显示范围,不方便;
3)坐标轴等长显示,ax.axis('equal'),经常没有实现等长的视觉效果;
4)标注:标注信息不会随着图像旋转移动,因此图像如果旋转移动了,标注还在原位置,失去了标注的一个重要意义。
5)规模:3D显示,当点数5000以下时,比较顺畅,当过万甚至几万时,会卡顿甚至软件罢工,这是因为底层没有使用opengld原因。对于动辄几万的3D点云,使用matplotlib只能做抽样显示等轻量处理。
以上是使用中发现的一些不变之处。需要继续探索。
从零开始学:
Seaborn从零开始学习教程(一) 风格选择
Seaborn从零开始学习教程(二) 颜色调控篇
数据可视化:
(一)——整体样式与调色板:https://blog.csdn.net/ICERON/article/details/85088582
(二)——分布数据可视化:https://blog.csdn.net/ICERON/article/details/85300451
(三)——探索变量之间的关系:https://blog.csdn.net/ICERON/article/details/88734168
(四)—— 分类数据可视化:https://blog.csdn.net/ICERON/article/details/89158201
# pycharm data = np.random.rand(3, 3) cmap = sns.diverging_palette(200, 20, sep=16, as_cmap=True) ax = sns.heatmap(data, cmap=cmap, center=0.5) plt.show()
http://seaborn.pydata.org/generated/seaborn.diverging_palette.html
seaborn使用husl色图,不支持jet色图,相近的可以用husl的蓝白红调色板代替。
diverging_palette函数使用husl颜色系统的离散色板。你需随意传递两种颜色,并设定明度和饱和度的端点。函数将使用husl的端点值及由此产生的中间值进行均衡。
seaborn.
diverging_palette
(h_neg,h_pos,s = 75,l = 50,sep = 10,n = 6,center ='light',as_cmap = False )
参数: | h_neg,h_pos:float in [ 0,359 ]
s:在[0,100]中浮动,可选
l:浮动[0,100],可选
n:int,可选
center:{“light”,“dark”},可选
as_cmap:bool,可选
|
---|---|
返回: | palette或cmap:seaborn调色板或matplotlib colormap
|
seaborn.heatmap官方操作手册:http://seaborn.pydata.org/generated/seaborn.heatmap.html
其他:https://blog.csdn.net/m0_38103546/article/details/79935671
安装:
pip install --user mayavi
依赖包:traits, pyface, traitsui, configobj, apptools, envisage, vtk, mayavi
4.1清空clf
from mayavi import mlab
...
mlab.clf(figure=None):
figure参数可以指定清空哪个figure。
这里没有视角保持keep_observers设置,因为clf不改变视角。
但是mayavi的plot3d等函数,会自动改变视角。需要对画图函数进行设置。
http://python.jobbole.com/81185/