文章目录

  • 前言
  • 一、散点图函数
  • 二、函数参数介绍
  • 三、代码实例
  • 总结

  • 前言

    最近在搞聚类算法,所以难免会用到一些散点图的用法,总结一下,方便以后参考。


    一、散点图函数

    #首先调用一下画图的库
    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,如有侵权联系删除。

    来源:爱写代码的十一

    物联沃分享整理
    物联沃-IOTWORD物联网 » python画散点图

    发表评论