python中如何给散点图上面的特定点做标记

 

今天想在散点图的某些特定的点外面画圆圈标记,从下面的文章找到一些灵感,只要在原来的散点图上面给指点添加相应的标志,设置其透明度就可以实现该想法。

顺便复习下散点图的用法。

 

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

 


这样:

 

 

 


还有这样:

 

 

这里写图片描述

 

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

这里写图片描述


圆点的散点图: 

这里写图片描述


Y形的散点图: 

这里写图片描述


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

 

 
  1. from numpy import *;

  2.  
  3. N = 50 # 点的个数

  4. x = np.random.rand(N) * 2 # 随机产生50个0~2之间的x坐标

  5. y = np.random.rand(N) * 2 # 随机产生50个0~2之间的y坐标

  6. colors = np.random.rand(N) # 随机产生50个0~1之间的颜色值

  7. area = np.pi * (15 * np.random.rand(N))**2 # 点的半径范围:0~15

  8. # 画散点图

  9. plt.scatter(x, y, s=area, c=colors, alpha=0.5, marker=(9, 3, 30))

  10. plt.show()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

这里用到一个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库的scatter函数来绘制散点图,并利用颜色映射(colormap)来为不同的赋予不同的颜色。下面是一个简单的例子: ```python import matplotlib.pyplot as plt import numpy as np # 生成随机数据 x = np.random.rand(50) y = np.random.rand(50) colors = np.random.rand(50) # 绘制散点图 plt.scatter(x, y, c=colors, cmap='cool') # 显示图像 plt.show() ``` 在上面的代码,我们使用`np.random.rand()`函数生成50个随机数作为横纵坐标,再使用`np.random.rand()`函数生成50个随机数作为的颜色值。然后在scatter函数,通过参数`c`来指定颜色值,通过参数`cmap`来指定使用的颜色映射。在这个例子,我们使用了`cool`颜色映射,它会将颜色值映射为一系列蓝色和绿色的颜色。 如果你想要为一些特定指定特定的颜色,可以将这些的颜色值设置为一个不同于其他的值,然后在绘制散点图时使用一个if语句来判断并为这些设置特定的颜色。例如: ```python import matplotlib.pyplot as plt import numpy as np # 生成随机数据 x = np.random.rand(50) y = np.random.rand(50) colors = np.zeros(50) # 所有的颜色值都初始化为0 colors[25] = 1 # 将第25个的颜色值设置为1 # 绘制散点图 for i in range(50): if colors[i] == 1: plt.scatter(x[i], y[i], c='red') else: plt.scatter(x[i], y[i], c='blue') # 显示图像 plt.show() ``` 在这个例子,我们将所有的颜色值初始化为0,然后将第25个的颜色值设置为1,表示这个需要特别标记。在绘制散点图时,我们使用一个for循环遍历所有,并使用if语句来判断是否需要为这个设置特定的颜色。如果这个的颜色值为1,则使用红色标记这个;否则使用蓝色标记这个
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樱桃木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值