在散点图中,一般使用一维的色彩映射显示散点的某个属性。 @Pjer 大佬使用2D的colormap实现了“在同一张2d图里面显示出所有对应点的2种属性”,并指出了“从HSV色彩空间到RGB色彩空间的映射”这一思路。大佬的回答如下:科研画图都用什么软件?www.zhihu.com
本文中,我使用Python复现了这一功能,并完善成一个方便使用的函数colorbar2d,在这里做简要介绍并提供源码。
colorbar2d 可选择输入以下参数:list1:(必须)一维数组,将转换为色相信息;
list2:(必须)一维数组,将转换为明度信息;
minColor:字符串,表示起始色相,默认minColor = None(注);
maxColor:字符串,表示终止色相,默认minColor = None(注);
maxv:0-1之间的浮点数或整数,表示最暗的明度,默认maxv = 1,即纯黑色;
s:0-1之间的浮点数或整数,表示饱和度,默认s = 1,即饱和度最大;
step:colormap的绘制方式为矩阵排列的散点叠加而成,该参数用于控制散点的间隔;默认step = 0.05;
colorbar2d实例化后,可选择返回以下输出:colorbar2d.rgb():返回 n×3 数组,n 为输入的一维数组的长度值,即样本数;3 为R、G、B信息;
colorbar2d.hsv():返回 n×3 数组,即各样本的H、S、V信息(不常用);
colorbar2d.colorbar(),返回两个一维数组(x、y轴散点坐标)和一个 n×3 数组(散点的RGB信息);上述信息用于绘制二维colorbar;
注:颜色可选择红(red,r)、橙(orange,o)、黄(yellow,y)、绿(green,g)、青(cyan,c)、蓝(blue,b)、紫(purple,m);若输入中没有颜色范围指示,colorbar默认绘制从红至紫的所有色相。
colorbar2d源码如下:
from matplotlib impor