美文网首页
Matplotlib画图浅析(1)

Matplotlib画图浅析(1)

作者: Demafic | 来源:发表于2019-02-27 22:59 被阅读0次

    Matplotlib画图浅析

    标签(空格分隔): python


    安装与导入

    首先,安装库Matplotlib不必再说了
    安装完成后,引入相关模块,开始学习Matplotlib

    import numpy as np
    import matplotlib.pyplot as plt
    

    Scatter散点图

    散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。
    用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。散点图将序列显示为一组点。值由点在图表中的位置表示。类别由图表中的不同标记表示。散点图通常用于比较跨类别的聚合数据。
    首先生成1024个符合标准正态分布的随机数(均值为0,方差为1)作为数据集,并图像化为散点图。

    import numpy as np
    import matplotlib.pyplot as plt
    n=1024
    #数据集的大小
    x = np.random.normal(0,1,n)
    y = np.random.normal(0,1,n)
    t = np.arctan2(y,x)
    t是产生颜色值
    

    数据集准备好了,我们要用函数Scatter来产生生成散点图了。
    首先来看看,这个函数的参数有哪些:

    plt.scatter(x,y,s=20,c='b',marker='o',cmap=None,norm=None,vmin=None,vmax=None,alpha=None,linewidths=None,verts=None,hold=None,**kwargs)
    

    s:点的大小
    c:色彩或颜色序列
    marker:点的形状
    cmap:colormap,颜色图谱,具体可以看这里
    norm:数据亮度
    vmin,vmax:亮度设置,若norm已经使用,则该参数无效
    alpha:透明度,0-1
    linewidths:线的粗细
    那么我们这里的代码如下:

    plt.scatter(x, y, s=75, c=t, alpha=.5)
    
    plt.xlim(-1.5, 1.5)
    #x轴上的数值范围
    plt.xticks(())  
    #不显示x轴上的数字
    plt.ylim(-1.5, 1.5)
    plt.yticks(())  
    plt.show()
    

    结果若下图所示:

    散点图.png

    Bar柱状图

    分别在X轴上方和下方生成12个数据,分别为0-11,Y轴上为均匀分布的随机数字,直接上代码:

    import numpy as np
    import matplotlib.pyplot as plt
    
    n =12
    x = np.arange(n)
    y1 = (1-x/float(n))*np.random.uniform(0.5, 1.0, n)
    #float是数字或数字的字符串表示形式转换为与它等效的有符号浮点数
    #np.random.uniform(0.5, 1.0, n):在0.5到1.0的均匀分布中随机取n个数字
    y2 = (1-x/float(n))*np.random.uniform(0.5, 1.0, n)
    
    plt.bar(x,+y1)
    #柱子向上
    plt.bar(x,-y2)
    #柱子向下
    
    plt.xlim(-.5, n)
    plt.xticks(())
    plt.ylim(-1.25, 1.25)
    plt.yticks(())
    

    这里再讲一下代码中的函数np.arange(start, stop[, step]),这里startstop,决定上下界,sstep为步长,当你只传入一个参数时,只表示stopstart默认为0。

    但是上面的代码运行出来,只是简单的柱形图:


    初始柱状图.png

    我们还可以设置一下柱子的颜色,以及标注数字。

    更改颜色

    首先,我们来看一下bar这个函数的参数:

    plt.bar(left, height, alpha=1, width=0.8, color=, edgecolor=, label=, lw=3)
    

    left:x轴的位置序列
    height:y轴的数值序列
    alpha:透明度
    width:柱子宽度
    color,facecolor:柱形图填充颜色
    edgecolor:图形边缘颜色
    label:解释每个图像的数值
    lw:边缘线的宽度

    首先我们先来改变一下柱子的填充颜色:

    plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
    plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
    

    当然这里的facecolor我们也可以用自带的。

    添加数据

    接下来,我们是用plt.text()来在柱子上方或者下方添加数据。
    先来解释一下这个函数吧。

    matplotlib.pyplot.text(x, y, s, fontdict=None, withdash=False, **kwargs)
    

    x,y:坐标
    s:要标注的字符串
    fontdict:设置文字字体,传入的是字典,比如fontdict={'size':16,'color='r''}
    withdash:boolean, optional, default: False

    for p, q in zip(x, y1):
        # ha: horizontal alignment
        # va: vertical alignment
        plt.text(p+0.01, q + 0.05, '%.2f' % p, ha='center', va='bottom')
    
    for p, q in zip(x, y2):
        # ha: horizontal alignment
        # va: vertical alignment
        plt.text(p+0.01 , -q - 0.05, '%.2f' % q, ha='center', va='top')
    

    其中:
    ha='center':横向居中
    va='bottom':纵向底部对齐
    %.2f:数字精度到后两位小数
    结果如下图:

    结果_柱状图.png

    这里还要说一下函数zip()
    这个函数将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回这些元组组成的列表。
    直接来看个例子吧:

    a = [1,2,3]
    b = [4,5,6]
    zipped = zip(a,b)
    

    最后输出的是:

    [(1,4),(2,5),(3,6)]
    

    最后希望大家来关注这个公众号啊:ForOnePiece
    一起来学习python啊

    foronepiece.JPG

    相关文章

      网友评论

          本文标题:Matplotlib画图浅析(1)

          本文链接:https://www.haomeiwen.com/subject/lizquqtx.html