最近开始学习Python编程,遇到scatter函数,感觉里面的参数不知道什么意思于是查资料,最后总结如下:
1、scatter函数原型
2、其中散点的形状参数marker如下:
3、其中颜色参数c如下:
4、基本的使用方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#导入必要的模块
import numpy as np
import matplotlib.pyplot as plt
#产生测试数据
x = np.arange( 1 , 10 )
y = x
fig = plt.figure()
ax1 = fig.add_subplot( 111 )
#设置标题
ax1.set_title( 'Scatter Plot' )
#设置X轴标签
plt.xlabel( 'X' )
#设置Y轴标签
plt.ylabel( 'Y' )
#画散点图
ax1.scatter(x,y,c = 'r' ,marker = 'o' )
#设置图标
plt.legend( 'x1' )
#显示所画的图
plt.show()
|
结果如下:
5、当scatter后面参数中数组的使用方法,如s,当s是同x大小的数组,表示x中的每个点对应s中一个大小,其他如c,等用法一样,如下:
(1)、不同大小
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#导入必要的模块
import numpy as np
import matplotlib.pyplot as plt
#产生测试数据
x = np.arange( 1 , 10 )
y = x
fig = plt.figure()
ax1 = fig.add_subplot( 111 )
#设置标题
ax1.set_title( 'Scatter Plot' )
#设置X轴标签
plt.xlabel( 'X' )
#设置Y轴标签
plt.ylabel( 'Y' )
#画散点图
sValue = x * 10
ax1.scatter(x,y,s = sValue,c = 'r' ,marker = 'x' )
#设置图标
plt.legend( 'x1' )
#显示所画的图
plt.show()
|
(2)、不同颜色
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#导入必要的模块
import numpy as np
import matplotlib.pyplot as plt
#产生测试数据
x = np.arange( 1 , 10 )
y = x
fig = plt.figure()
ax1 = fig.add_subplot( 111 )
#设置标题
ax1.set_title( 'Scatter Plot' )
#设置X轴标签
plt.xlabel( 'X' )
#设置Y轴标签
plt.ylabel( 'Y' )
#画散点图
cValue = [ 'r' , 'y' , 'g' , 'b' , 'r' , 'y' , 'g' , 'b' , 'r' ]
ax1.scatter(x,y,c = cValue,marker = 's' )
#设置图标
plt.legend( 'x1' )
#显示所画的图
plt.show()
|
结果:
(3)、线宽linewidths
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#导入必要的模块
import numpy as np
import matplotlib.pyplot as plt
#产生测试数据
x = np.arange( 1 , 10 )
y = x
fig = plt.figure()
ax1 = fig.add_subplot( 111 )
#设置标题
ax1.set_title( 'Scatter Plot' )
#设置X轴标签
plt.xlabel( 'X' )
#设置Y轴标签
plt.ylabel( 'Y' )
#画散点图
lValue = x
ax1.scatter(x,y,c = 'r' ,s = 100 ,linewidths = lValue,marker = 'o' )
#设置图标
plt.legend( 'x1' )
#显示所画的图
plt.show()
|
注: 这就是scatter基本的用法。
PS:下面举个示例
本文记录了python中的数据可视化——散点图scatter,令x作为数据(50个点,每个30维),我们仅可视化前两维。labels为其类别(假设有三类)。
这里的x就用random来了,具体数据具体分析。
label设定为[1:20]->1, [21:35]->2, [36:50]->3,(python中数组连接方法:先强制转为list,用+,再转回array)
用matplotlib的scatter绘制散点图,legend和matlab中稍有不同,详见代码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
x = rand( 50 , 30 )
from numpy import *
import matplotlib
import matplotlib.pyplot as plt
#basic
f1 = plt.figure( 1 )
plt.subplot( 211 )
plt.scatter(x[:, 1 ],x[:, 0 ])
# with label
plt.subplot( 212 )
label = list (ones( 20 )) + list ( 2 * ones( 15 )) + list ( 3 * ones( 15 ))
label = array(label)
plt.scatter(x[:, 1 ],x[:, 0 ], 15.0 * label, 15.0 * label)
# with legend
f2 = plt.figure( 2 )
idx_1 = find(label = = 1 )
p1 = plt.scatter(x[idx_1, 1 ], x[idx_1, 0 ], marker = 'x' , color = 'm' , label = '1' , s = 30 )
idx_2 = find(label = = 2 )
p2 = plt.scatter(x[idx_2, 1 ], x[idx_2, 0 ], marker = '+' , color = 'c' , label = '2' , s = 50 )
idx_3 = find(label = = 3 )
p3 = plt.scatter(x[idx_3, 1 ], x[idx_3, 0 ], marker = 'o' , color = 'r' , label = '3' , s = 15 )
plt.legend(loc = 'upper right' )
|
result:
figure(1):
figure(2):
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://blog.csdn.net/anneqiqi/article/details/64125186