python中画散点图 python中画散点图
示例代码:
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D data = np.random.randint(0, 255, size=[40, 40, 40]) x, y, z = data[0], data[1], data[2] ax = plt.subplot(111, projection='3d') # 创建一个三维的绘图工程 # 将数据点分成三部分画,在颜色上有区分度 ax.scatter(x[:10], y[:10], z[:10], c='y') # 绘制数据点 ax.scatter(x[10:20], y[10:20], z[10:20], c='r') ax.scatter(x[30:40], y[30:40], z[30:40], c='g') ax.set_zlabel('Z') # 坐标轴 ax.set_ylabel('Y') ax.set_xlabel('X') plt.show()
今天想在散点图的某些特定的点外面画圆圈标记,从下面的文章找到一些灵感,只要在原来的散点图上面给指点添加相应的标志,设置其透明度就可以实现该想法。
顺便复习下散点图的用法。
大家平时为了直观地显示数据的分布情况,在画散点图的时候,简单地把数据点用圆点标出来,像这样:
这样:
还有这样:
然而今天我想给大家展示的散点图,或许没有那么直观地反映数据的分布情况,不够实用,但是真的很美很艺术,每个的点的颜色和大小都不一样,形状也是多变的。比如五角星的散点图:
圆点的散点图:
Y形的散点图:
等等还有很多,那么这些漂亮的形状是怎么画出来的呢?其实代码很简单:
-
from numpy import *;
-
-
N = 50 # 点的个数
-
x = np.random.rand(N) * 2 # 随机产生50个0~2之间的x坐标
-
y = np.random.rand(N) * 2 # 随机产生50个0~2之间的y坐标
-
colors = np.random.rand(N) # 随机产生50个0~1之间的颜色值
-
area = np.pi * (15 * np.random.rand(N))**2 # 点的半径范围:0~15
-
# 画散点图
-
plt.scatter(x, y, s=area, c=colors, alpha=0.5, marker=(9, 3, 30))
-
plt.show()
这里用到一个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的值后的效果:
marker | result |
---|---|
”.” | |
”,” | |
“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的值自动被忽略 |
……
这么多种点的形状符号够我们用了吧~以后想用哪种查一下就好啦~
linux系统调用和库函数调用的区别
VC、PE和天使投资是什么意思?有什么区别?
AWS使用心得:当初我曾错过的那些宝贵经验
bzoj 2208: [Jsoi2010]连通数
android学习笔记(5)Activity生命周期学习
Nginx 进程间通信
手写一个节点大小平衡树(SBT)模板,留着用
JavaFX学习之道:JavaFX之TableView
Docker 命令行和后台參数
- 最新文章
-
[置顶] 如何把你的笔记本电脑变成一个Wi-Fi路由器在Windows 7 & 8?
使用高性能xml序列化框架jibx作为spring mvc的xml view
如何诊断crs 安装时 root.sh 脚本执行错误
Python3简明教程(七)—— 字符串
Python3中的输入输出
Python3简明教程(六)—— 数据结构
Python3简明教程(五)—— 流程控制之循环
Python3简明教程(四)—— 流程控制之分支
Python3简明教程(三)—— 运算符和表达式
Python3简明教程(二)—— 变量和数据类型
- 热门文章
-
Python3简明教程(一)—— 开始Python之旅
TebsorFlow低阶API(五)—— 保存和恢复
TensorFlow低阶API(四)—— 图和会话
Linux软连接和硬链接
LINUX下如何开启FTP服务器
http://blog.csdn.net/gobitan/article/details/1809763
TCP 的那些事儿(上) SACK
浅谈Volatile与多线程
Linux内核部件分析 原子性操作atomic_t
printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf
示例代码:
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D data = np.random.randint(0, 255, size=[40, 40, 40]) x, y, z = data[0], data[1], data[2] ax = plt.subplot(111, projection='3d') # 创建一个三维的绘图工程 # 将数据点分成三部分画,在颜色上有区分度 ax.scatter(x[:10], y[:10], z[:10], c='y') # 绘制数据点 ax.scatter(x[10:20], y[10:20], z[10:20], c='r') ax.scatter(x[30:40], y[30:40], z[30:40], c='g') ax.set_zlabel('Z') # 坐标轴 ax.set_ylabel('Y') ax.set_xlabel('X') plt.show()
今天想在散点图的某些特定的点外面画圆圈标记,从下面的文章找到一些灵感,只要在原来的散点图上面给指点添加相应的标志,设置其透明度就可以实现该想法。
顺便复习下散点图的用法。
大家平时为了直观地显示数据的分布情况,在画散点图的时候,简单地把数据点用圆点标出来,像这样:
这样:
还有这样:
然而今天我想给大家展示的散点图,或许没有那么直观地反映数据的分布情况,不够实用,但是真的很美很艺术,每个的点的颜色和大小都不一样,形状也是多变的。比如五角星的散点图:
圆点的散点图:
Y形的散点图:
等等还有很多,那么这些漂亮的形状是怎么画出来的呢?其实代码很简单:
-
from numpy import *;
-
-
N = 50 # 点的个数
-
x = np.random.rand(N) * 2 # 随机产生50个0~2之间的x坐标
-
y = np.random.rand(N) * 2 # 随机产生50个0~2之间的y坐标
-
colors = np.random.rand(N) # 随机产生50个0~1之间的颜色值
-
area = np.pi * (15 * np.random.rand(N))**2 # 点的半径范围:0~15
-
# 画散点图
-
plt.scatter(x, y, s=area, c=colors, alpha=0.5, marker=(9, 3, 30))
-
plt.show()
这里用到一个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的值后的效果:
marker | result |
---|---|
”.” | |
”,” | |
“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的值自动被忽略 |
……
这么多种点的形状符号够我们用了吧~以后想用哪种查一下就好啦~