zsh2270365028的个人博客分享 http://blog.sciencenet.cn/u/zsh2270365028

博文

[转载]python 画散点图(marker 的主要类型查询)

已有 5437 次阅读 2021-12-6 15:37 |个人分类:Python|系统分类:科研笔记|文章来源:转载

refer to:

https://blog.csdn.net/qq_38573437/article/details/103467003

https://www.cnblogs.com/sench/p/9522627.html


大家平时为了直观地显示数据的分布情况,在画散点图的时候,简单地把数据点用圆点标出来,像这样:


这样:




还有这样:

这里写图片描述

然而今天我想给大家展示的散点图,或许没有那么直观地反映数据的分布情况,不够实用,但是真的很美很艺术,每个的点的颜色和大小都不一样,形状也是多变的。比如五角星的散点图:

这里写图片描述


圆点的散点图:

这里写图片描述


Y形的散点图:

这里写图片描述


等等还有很多,那么这些漂亮的形状是怎么画出来的呢?其实代码很简单:

这里用到一个matplotlib.pyplot子库中画散点图的函数
matplotlib.pyplot.scatter(x, y, s=20, c=None, marker='o',
cmap=None, norm=None, vmin=None, vmax=None, alpha=None,
linewidths=None, verts=None, edgecolors=None, hold=None,
data=None, **kwargs)

这个函数接收的参数很多,有默认值的平时也不需要我们指定,是可选的,这次我们用到的除了基本的x ,y参数,还有c,s,alpha和marker,c就是为点指定的颜色数组,s是点的面积大小,alpha是点的颜色的透明度,marker是指定点标记的形状。在例子里指定透明度为0.5,c和s是随机生成的,我们要改变的是marker的值,marker有很多值可供选择,下表展示了在例子代码的基础上,改变marker的值后的效果:

markerresult
”.”
”,”
“o”
“v”
“^”
“<”
“>”
“1”
“2”
“3”
“4”
“8”
“s”
“p”
“*”
“h”
“H”
“+”
“x”
“D”
“d”
“_”
“None”没错就是什么都没有。。。
“$…$”
(numsides, style, angle)
eg:(9,0, 30)
注:numsides是边的个数,
angle是旋转角度,
style只有0,1,2,3四个值
(numsides, style, angle)
eg:(9,1, 30)
(numsides, style, angle)
eg:(9,2, 30)
(numsides, style, angle)
eg:(9,3, 30)
注:此时numsides和angle的值自动被忽略




在matplotlib中使用函数 matplotlib.pyplot.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, hold=None, data=None, **kwargs)

常用参数有:x,y组成了散点的坐标;s为散点的面积;c为散点的颜色(默认为蓝色'b');marker为散点的标记;alpha为散点的透明度(0与1之间的数,0为完全透明,1为完全不透明);linewidths为散点边缘的线宽;如果marker为None,则使用verts的值构建散点标记;edgecolors为散点边缘颜色。
其他参数如cmap为colormap;norm为数据亮度;vmin、vmax和norm配合使用用来归一化亮度数据,这些与数据亮度有关,可以参考这篇文章
下面为常见的用法:

1、绘制普通散点图

import matplotlib 
import matplotlib.pyplot as pltimport numpy as np# 保证图片在浏览器内正常显示%matplotlib inline# 10个点N = 10x = np.random.rand(N)
y = np.random.rand(N)
plt.scatter(x, y)
plt.show()

输出:

2、更改散点的大小

import matplotlib 
import matplotlib.pyplot as pltimport numpy as np# 保证图片在浏览器内正常显示%matplotlib inline# 10个点N = 10x = np.random.rand(N)y = np.random.rand(N)# 每个点随机大小s = (30*np.random.rand(N))**2plt.scatter(x, y, s=s)plt.show()

输出:

3、更改散点颜色和透明度

import matplotlib import matplotlib.pyplot as pltimport numpy as np# 保证图片在浏览器内正常显示%matplotlib inline# 10个点N = 10x = np.random.rand(N)y = np.random.rand(N)# 每个点随机大小s = (30*np.random.rand(N))**2# 随机颜色c = np.random.rand(N)plt.scatter(x, y, s=s, c=c, alpha=0.5)plt.show()

输出:

4、更改散点形状

import matplotlib.pyplot as pltimport numpy as np# 保证图片在浏览器内正常显示%matplotlib inline# 10个点N = 10x = np.random.rand(N)y = np.random.rand(N)s = (30*np.random.rand(N))**2c = np.random.rand(N)plt.scatter(x, y, s=s, c=c, marker='^', alpha=0.5)plt.show()

输出:

所有可用的形状可以参考matplotlib.markers

5、在一张图上绘制两组数据的散点

import matplotlib.pyplot as pltimport numpy as np# 保证图片在浏览器内正常显示%matplotlib inline# 10个点N = 10x1 = np.random.rand(N)y1 = np.random.rand(N)x2 = np.random.rand(N)y2 = np.random.rand(N)plt.scatter(x1, y1, marker='o')plt.scatter(x2, y2, marker='^')plt.show()

输出:

6、为散点设置图例

import matplotlib.pyplot as pltimport numpy as np# 保证图片在浏览器内正常显示%matplotlib inline# 10个点N = 10x1 = np.random.rand(N)
y1 = np.random.rand(N)
x2 = np.random.rand(N)
y2 = np.random.rand(N)
plt.scatter(x1, y1, marker='o', label="circle")
plt.scatter(x2, y2, marker='^', label="triangle")
plt.legend(loc='best')
plt.show()

输出:




https://blog.sciencenet.cn/blog-587102-1315435.html

上一篇:[转载]怎样在Python快速创建有序整数数组
下一篇:arXiv: 12.2-8
收藏 IP: 119.78.226.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-19 20:24

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部