• Python matplotlib 画图入门 07 散点图


    Matplotlib 散点图

    我们可以使用 pyplot 中的 scatter() 方法来绘制散点图。

    scatter() 方法语法格式如下:

    matplotlib.pyplot.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)

    参数说明:

    x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。

    s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。

    c:点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组。

    marker:点的样式,默认小圆圈 'o'。

    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。

    plotnonfinite::布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。

    **kwargs::其他参数。

    以下实例 scatter() 函数接收长度相同的数组参数,一个用于 x 轴的值,另一个用于 y 轴上的值:

    实例

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
    y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
    
    plt.scatter(x, y)
    plt.show()

    显示结果如下:

    设置图标大小:

    实例

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
    y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
    sizes = np.array([20,50,100,200,500,1000,60,90])
    plt.scatter(x, y, s=sizes)
    plt.show()

    显示结果如下:

    自定义点的颜色:

    实例

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
    y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
    colors = np.array(["red","green","black","orange","purple","beige","cyan","magenta"])
    
    plt.scatter(x, y, c=colors)
    plt.show()

    显示结果如下:

    设置两组散点图:

    实例

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
    y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
    plt.scatter(x, y, color = 'hotpink')
    
    x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
    y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
    plt.scatter(x, y, color = '#88c999')
    
    plt.show()

    显示结果如下:

    使用随机数来设置散点图:

    实例

    import numpy as np
    import matplotlib.pyplot as plt
    
    # 随机数生成器的种子
    np.random.seed(19680801)
    
    
    N = 50
    x = np.random.rand(N)
    y = np.random.rand(N)
    colors = np.random.rand(N)
    area = (30 * np.random.rand(N))**2  # 0 to 15 point radii
    
    plt.scatter(x, y, s=area, c=colors, alpha=0.5) # 设置颜色及透明度
    
    plt.title("Scatter Test") # 设置标题
    
    plt.show()

    显示结果如下:

    颜色条 Colormap

    Matplotlib 模块提供了很多可用的颜色条。

    颜色条就像一个颜色列表,其中每种颜色都有一个范围从 0 到 100 的值。

    下面是一个颜色条的例子:

    设置颜色条需要使用 cmap 参数,默认值为 'viridis',之后颜色值设置为 0 到 100 的数组。

    实例

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
    y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
    colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
    
    plt.scatter(x, y, c=colors, cmap='viridis')
    
    plt.show()

    显示结果如下:

    如果要显示颜色条,需要使用 plt.colorbar() 方法:

    实例

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
    y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
    colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
    
    plt.scatter(x, y, c=colors, cmap='viridis')
    
    plt.colorbar()
    
    plt.show()

    显示结果如下:

    换个颜色条参数, cmap 设置为 afmhot_r:

    实例

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
    y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
    colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
    
    plt.scatter(x, y, c=colors, cmap='afmhot_r')
    plt.colorbar()
    plt.show()

    显示结果如下:

    颜色条参数值可以是以下值:

    颜色名称 保留关键字
    Accent   Accent_r
    Blues   Blues_r
    BrBG   BrBG_r
    BuGn   BuGn_r
    BuPu   BuPu_r
    CMRmap   CMRmap_r
    Dark2   Dark2_r
    GnBu   GnBu_r
    Greens   Greens_r
    Greys   Greys_r
    OrRd   OrRd_r
    Oranges   Oranges_r
    PRGn   PRGn_r
    Paired   Paired_r
    Pastel1   Pastel1_r
    Pastel2   Pastel2_r
    PiYG   PiYG_r
    PuBu   PuBu_r
    PuBuGn   PuBuGn_r
    PuOr   PuOr_r
    PuRd   PuRd_r
    Purples   Purples_r
    RdBu   RdBu_r
    RdGy   RdGy_r
    RdPu   RdPu_r
    RdYlBu   RdYlBu_r
    RdYlGn   RdYlGn_r
    Reds   Reds_r
    Set1   Set1_r
    Set2   Set2_r
    Set3   Set3_r
    Spectral   Spectral_r
    Wistia   Wistia_r
    YlGn   YlGn_r
    YlGnBu   YlGnBu_r
    YlOrBr   YlOrBr_r
    YlOrRd   YlOrRd_r
    afmhot   afmhot_r
    autumn   autumn_r
    binary   binary_r
    bone   bone_r
    brg   brg_r
    bwr   bwr_r
    cividis   cividis_r
    cool   cool_r
    coolwarm   coolwarm_r
    copper   copper_r
    cubehelix   cubehelix_r
    flag   flag_r
    gist_earth   gist_earth_r
    gist_gray   gist_gray_r
    gist_heat   gist_heat_r
    gist_ncar   gist_ncar_r
    gist_rainbow   gist_rainbow_r
    gist_stern   gist_stern_r
    gist_yarg   gist_yarg_r
    gnuplot   gnuplot_r
    gnuplot2   gnuplot2_r
    gray   gray_r
    hot   hot_r
    hsv   hsv_r
    inferno   inferno_r
    jet   jet_r
    magma   magma_r
    nipy_spectral   nipy_spectral_r
    ocean   ocean_r
    pink   pink_r
    plasma   plasma_r
    prism   prism_r
    rainbow   rainbow_r
    seismic   seismic_r
    spring   spring_r
    summer   summer_r
    tab10   tab10_r
    tab20   tab20_r
    tab20b   tab20b_r
    tab20c   tab20c_r
    terrain   terrain_r
    twilight   twilight_r
    twilight_shifted   twilight_shifted_r
    viridis   viridis_r
    winter   winter_r

    REF

    https://www.runoob.com/matplotlib/matplotlib-scatter.html

  • 相关阅读:
    Java回顾之Spring基础
    Java回顾之ORM框架
    Java回顾之JDBC
    Java回顾之一些基础概念
    Java回顾之反射
    Java回顾之序列化
    platform_device与platform_driver
    DB9 公头母头引脚定义及连接
    浅谈UML的概念和模型之UML九种图
    为Windows 7的winsxs目录瘦身,谨慎。
  • 原文地址:https://www.cnblogs.com/emanlee/p/16021293.html
Copyright © 2020-2023  润新知