朋友们在用Python上画图的时候,讲究点必然是需要为数据点添加合适的颜色的。
先上一个简单的示例数据,接下来的例子我都只画散点图(scatter)啦。
一般来说 (我只知道) 我们有两种给点上色的情况:
明确知道每个点应该是什么颜色
我一时半会儿能想到的一个应用场景是:
在对数据集做了聚类,获得了对每一个点的类别标签(label of clustering)后,然后我们希望把这个标签通过颜色体现在图中。
不过这次准备的示例数据好像不适合做聚类什么的…
那我们就说,我认为坐标为奇数的点都该是红的,坐标是偶数的点都该是蓝的~
为此你需要准备一个列表(或者numpy.ndarray或者pandas.core.series.Series之类的),里面是“红蓝红蓝红蓝…”,然后把这个列表交给“color”这一参数。
(当然你也可以直接给一个代表颜色的字符串给“color”,这样同一行命令里涉及到的所有点都是同一个颜色;然后再画第二批点,给他们全部设置另一种颜色。)
利用颜色体现数据点的其他连续值属性
小标题稍微有点没说人话…“连续值”(continuous)这里是说“离散值”(discrete)和“类别值”(categorical)的相对概念,也就是说体现这种属性的数字,他不表示“1号”“2号”这样的整数,而是“0.23333mL”“2.3333333m”这样的精确数值。这里我专业上有个很典型的应用场景:
生物信息学中,当我们获得一组样品的基因表达量矩阵后,我们通常会通过降维算法(如PCA)来实现数据的可视化,从而直观观察样品点之间的距离关系。此时我们会希望通过数据点的颜色来体现某一目的基因的表达量高低,以此直观地了解该基因在不同样品中的表达情况。
这是我们需要做的是,把包含了这样数值的一维列表(或者类似的迭代器)交给“c”这个参数,这样Matplotlib便会通过渐变色的形式为你输入的值分配合适的颜色。Matplotlib自带了很多配色方案,我们可以通过”cmap“这一参数来进行选择。
对不起例子不好,如果不设置“cmap”,默认配色是这样的:
总之Matplotlib有超多的配色方案,你可以运行“dir(matplotlib.cm)”来看看都有些啥。
我就是想自定义超多颜色就是不想用别人设好的
我就是小标题里这种人。来,点 这里 。大概就是我自己写了个函数,你可以输入你想要的颜色和渐变区间,他会返回一个Matplotlib.colors.ListedColormap实例,画图时你只需把这个实例交给“cmap”参数,就可以看到想要的配色啦。
原文上传于我的个人博客: Create Colormap (cmap) for Matplotlib 复制示例代码去那边。