python画散点图
文章目录
前言
最近在搞聚类算法,所以难免会用到一些散点图的用法,总结一下,方便以后参考。
一、散点图函数
#首先调用一下画图的库
import matplotlib.pyplot as plt
plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
#记得用完了这个函数要show一下,不然成不了图片
plt.show()
二、函数参数介绍
x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。用来表示散点图的横纵坐标,例如一个(100,99)的数据,x=100,y=99
s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小,数值越大对应的图中的点越大。
c:点的颜色,默认蓝色 ‘b’,也可以是个 RGB 或 RGBA 二维行数组。
写一下常用的颜色所对应的数组:
‘b’ blue
‘g’ green
‘r’ red
‘c’ cyan
‘m’ magenta
‘y’ yellow
‘k’ black
‘w’ white
marker:点的样式,默认小圆圈 ‘o’。
常用的点的样式:
‘.’:点(point marker)
‘,’:像素点(pixel marker)
‘o’:圆形(circle marker)
‘v’:朝下三角形(triangle_down marker)
‘^’:朝上三角形(triangle_up marker)
‘<‘:朝左三角形(triangle_left marker)
‘>’:朝右三角形(triangle_right marker)
‘1’:(tri_down marker)
‘2’:(tri_up marker)
‘3’:(tri_left marker)
‘4’:(tri_right marker)
‘s’:正方形(square marker)
‘p’:五边星(pentagon marker)
‘*’:星型(star marker)
‘h’:1号六角形(hexagon1 marker)
‘H’:2号六角形(hexagon2 marker)
‘+’:+号标记(plus marker)
‘x’:x号标记(x marker)
‘D’:菱形(diamond marker)
‘d’:小型菱形(thin_diamond marker)
‘|’:垂直线形(vline marker)
‘_’:水平线形(hline marker)
cmap:Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。
还没搞明白这玩意的用法。
norm:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用,改变点的亮度。
vmin,vmax:亮度设置,在 norm 参数存在时会忽略。
alpha:透明度设置,0-1 之间,默认 None,即不透明。
linewidths:标记点的长度。
edgecolors:颜色或颜色序列,默认为 ‘face’,可选值有 ‘face’, ‘none’, None。表示的是点的描边的颜色,例如 edgecolors=‘r’ 就是让边的颜色为红色。
plotnonfinite::布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。
**kwargs::其他参数。
三、代码实例
在这里我们先引入一个点的数据命名为 data.txt
151,54
137,55
95,66
156,91
193,101
58,104
133,105
120,118
167,136
110,149
96,174
22,184
60,193
88,198
177,202
213,235
133,249
127,255
70,257
40,273
64,271
168,286
126,325
132,335
读入点的数据并画图,我们这里是用的pandas读的,pandas读出来之后数据格式比较麻烦,我们得对他进行数据处理。
import matplotlib.pyplot as plt
import pandas as pd
#读入文件
file_path = "data.txt"
df = pd.read_table(file_path, header=None)
#定义 x y变量
x = []
y = []
#定义颜色变量
color = ['c', 'b', 'g', 'r', 'm', 'y', 'k', 'w']
#用for循环将文件中的值赋值给x,y
for i in range(len(df[0])):
x.append(int(df[0][i].split(',')[0]))
y.append(int(df[0][i].split(',')[1]))
#画图
plt.scatter(x, y, c=color[1], edgecolors='r')
plt.show()
代码所示图的样式:
在这里我在附一张用Kmeans聚类算法画的图。
这里我聚成了4个类,分别用不同的颜色和图形来表示,效果很明显。
总结
散点图的函数参数有很多,但常用的参数为(x,y,c,marker,edgecolors),其余的如果不是特别专业基本用不到。还有就是里面所用到的参数都是list类型,如果不是记得将他们转换。
本文参数的类型介绍参考至菜鸟教程:Matplotlib 散点图,附上网址https://www.runoob.com/matplotlib/matplotlib-scatter.html,如有侵权联系删除。
来源:爱写代码的十一