zoukankan      html  css  js  c++  java
  • plt.scatter() 和sns.scatterplot() 画散点图

    plt.scatter()画散点图

    matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)

    参数解释:

    1 x,y:表示的是大小为(n,)的数组,也就是我们即将绘制散点图的数据点,相当于是x、y轴坐标
    2 s:是一个实数或者是一个数组大小为(n,),这个是一个可选的参数。可理解为散点的的点的大小
    3 c:表示的是颜色,也是一个可选项。默认是蓝色'b',表示的是标记的颜色,或者可以是一个表示颜色的字符,或者是一个长度为n的表示颜色的序列等等,感觉还没用到过现在不解释了。但是c不可以是一个单独的RGB数字,也不可以是一个RGBA的序列。可以是他们的2维数组(只有一行)。
    4 marker:表示的是标记的样式,默认的是'o'5 cmap:Colormap实体或者是一个colormap的名字,cmap仅仅当c是一个浮点数数组的时候才使用。如果没有申明就是image.cmap
    6 norm:Normalize实体来将数据亮度转化到0-1之间,也是只有c是一个浮点数的数组的时候才使用。如果没有申明,就是默认为colors.Normalize。
    7 vmin,vmax:实数,当norm存在的时候忽略。用来进行亮度数据的归一化。
    8 alpha:实数,0-1之间。
    9 linewidths:也就是标记点的长度。

    例子:

    ##  基础函数库
    import numpy as np 
    
    ## 导入画图库
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
    y_label = np.array([0, 0, 0, 1, 1, 1])
    
    
    ## 可视化构造的数据样本点
    plt.figure()
    plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
    plt.title('Dataset')
    plt.show()

    #改变s的参数,点的大小改变了
    plt.figure()
    plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=100, cmap='viridis')
    plt.title('Dataset')
    plt.show()

    #改变market
    plt.figure()
    plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=100, cmap='viridis',marker='x')
    plt.title('Dataset')
    plt.show()

    sns.scatterplot() 画散点图

    seaborn.scatterplot(x=None, y=None, hue=None,
                        style=None, size=None, data=None, 
                        palette=None, hue_order=None, hue_norm=None,
                        sizes=None, size_order=None, size_norm=None, 
                        markers=True, style_order=None, x_bins=None,
                        y_bins=None, units=None, estimator=None, 
                        ci=95, n_boot=1000, alpha='auto', x_jitter=None,
                        y_jitter=None, legend='brief', ax=None, **kwargs)

    参数解释:

    1 data: DataFrame
    2 x,y为数据中变量的名称; 作用:对将生成具有不同颜色的元素的变量进行分组。可以是分类或数字.
    3 size:数据中的名称  作用:根据指定的名称(列名),根据该列中的数据值的大小生成具有不同大小的效果。可以是分类或数字。
    4 style:数据中变量名称(比如:二维数据中的列名) 作用:对将生成具有不同破折号、或其他标记的变量进行分组。
    5 palette:调试板名称,列表或字典类型  作用:设置hue指定的变量的不同级别颜色。
    6 hue_order:列表(list)类型  作用:指定hue变量出现的指定顺序,否则他们是根据数据确定的。
    7 hue_norm:tuple或Normalize对象
    8 sizes:list dict或tuple类型  作用:设置线宽度,当其为数字时,它也可以是一个元组,指定要使用的最大和最小值,会自动在该范围内对其他值进行规范化。

    例子

    ## 导入画图库
    import matplotlib.pyplot as plt
    import seaborn as sns; 
    sns.set()
    tips = sns.load_dataset("tips")
    
    #如果单纯是data一个参数,这data的特征需要全部都是数值型 sns.scatterplot(data
    =tips) #ValueError: A wide-form input must have only numeric values. sns.scatterplot( x="total_bill", y="tip",data=tips) plt.show()

    设置hue 根据设置的类别,产生颜色不同的点的散点图 eg.下图为根据time分类的散点图

    sns.scatterplot(x="total_bill", y="tip", hue="time",data=tips)
    plt.show()

    设置hue 根据设置的类别,产生颜色不同的点的散点图,设置style,使其生成不同的标记的点 eg.下图为hue与style设置相同的分类的散点图

    sns.scatterplot(x="total_bill", y="tip",hue="time", style="time", data=tips)
    plt.show()

     设置size ,根据设置的类别,产生大小不同的点的散点图

    sns.scatterplot(x="total_bill", y="tip", size="time",data=tips)
    plt.show()

     使用指定的标记

    markers = {"Lunch": "s", "Dinner": "X"}
    sns.scatterplot(x="total_bill", y="tip", style="time",
                    markers=markers,
                    data=tips)
    plt.show()

     利用pandas构建时间序列数据,从2000-1-31开始,以月为频率,生成100条时间序列

    index = pd.date_range("2000-1-11", periods=100,
                          freq="m", name="date")
    data = np.random.randn(100, 4).cumsum(axis=0)
    wide_df = pd.DataFrame(data, index, ["a", "b", "c", "d"])
    sns.scatterplot(data=wide_df)
    plt.show()

  • 相关阅读:
    node设置res.cookie跨域问题解决
    Rails常用插件
    什么是编程基础
    【数学之美】抽屉原理
    时分秒针重合问题
    如何理解【业务逻辑】
    【转】有关环境变量的若干问题?
    关于指针类型转化后在printf输出的问题
    rand * () 之间相互生成总结
    4.14做一个新浪微博的小东东
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/13475462.html
Copyright © 2011-2022 走看看