Python实现彩色散点图绘制(利用色带对散点图进行颜色渲染)

Python06

Python实现彩色散点图绘制(利用色带对散点图进行颜色渲染),第1张

接受自己的普通,然后全力以赴的出众,告诉自己要努力,但不要着急....

当然, 这个结果并不是我真正想要的,Pass, 太丑了!

好吧,安排,我们先看下实现后的效果!

这个效果自然就比之前的好多了!

实现python散点图绘制需要用到matplotlib库, matplotlib库是专门用于可视化绘图的工具库;学习一个新的库当然看官方文档了: https://www.osgeo.cn/matplotlib/contents.html

实现思路:

matplotlib.pyplot.scatter() 函数是专门绘制散点图的函数: https://www.osgeo.cn/matplotlib/api/_as_gen/matplotlib.pyplot.scatter.html?highlight=scatter#matplotlib.pyplot.scatter

matplotlib.pyplot.scatter ( x, y , s=None , c=None , marker=None , cmap=None , norm=None , vmin=None , vmax=None , alpha=None , linewidths=None , verts=None , edgecolors=None , ***, data=None , ** kwargs ) **

plt.scatter(observation, estimate, c=Z1, cmap=colormap, marker=".", s=marker_size, norm=colors.LogNorm(vmin=Z1.min(), vmax=0.5 * Z1.max()))

其中:

1、c参数为计算的散点密度

2、cmap为色带(matplotlib里面自带了很多色带可供选择),参见:

https://www.osgeo.cn/matplotlib/gallery/color/colormap_reference.html

3、由于计算的散点密度数值大小分散,因此利用norm参数对散点密度Z1进行归一化处理(归一化方式很多,参见colors类),并给归一化方式设置色带刻度的最大最小值vmin和vmax(一般这两个参数就是指定散点密度的最小值和最大值),这样就建立起了密度与色带的映射关系。

https://matplotlib.org/tutorials/colors/colormapnorms.html

(这里的结果与前面展示的相比改变了计算散点密度的半径:radius = 3以及绘制散点图的散点大小marksize)

作者能力水平有限,欢迎各位批评指正!

在seaborn中,绘制散点图的函数有 scatterplot 和 relplot 。

seaborn 绘制散点图最简单的方式是使用 scatterplot 方法,指定 data 参数和 x 和 y 参数。

添加 hue 参数,设置点的分组颜色。

添加 style 参数,设置点的分组样式。

添加 size 参数,设置点的分组大小。

hue , style , size 参数可以同时设置多个。

分面散点图用 relplot 方法绘制,需要设置 kind="scatter" ,然后使用 col , row 参数分面。

基本代码如下:

这里使用numpy包的random函数随机生成1000组数据,然后通过scatter函数绘制了散点图。

重点其实在于scatter函数。

x,y 形如shape(n,)的数组,可选值,

s 点的大小(也就是面积)默认20

c 点的颜色或颜色序列,默认蓝色。其它如c = 'r' (red)c = 'g' (green)c = 'k' (black) c = 'y'(yellow)

marker 形状,可选值,默认是圆

如果需要其他的,可搜索matplotlib的官网,在官网中搜索markers,选择第一个结果。

alpha:标量,可选,默认值:无, 0(透明)和1(不透明)之间的alpha混合值

示例alpha = 0.5

edgecolors,顾名思义,边缘颜色或颜色序列,可选值,默认值:None