zoukankan      html  css  js  c++  java
  • Matplotlib模块的基本使用

    一、折线绘图

    import pandas as pd
    import matplotlib.pyplot as plt
    
    data = pd.read_csv("F:\ml\机器学习\01\1.csv")
    
    print(data)
             date  values
    0  2012/11/15      90
    1    2013/4/5      34
    2    2014/2/3      34
    3    2015/8/9      35
    4    2016/6/2      72
    5    2016/7/9      62

    data['date'] = pd.to_datetime(data['date']) #将日期转化为以-的格式,方便阅读
    
    print(data)
            date  values
    0 2012-11-15      90
    1 2013-04-05      34
    2 2014-02-03      34
    3 2015-08-09      35
    4 2016-06-02      72
    5 2016-07-09      62

    #以下将以图形式表现出来
    plt.figure()#以这个开始,创建figure的一个对象
    
    plt.plot(data['date'], data['values']) #plot()的里面的参数,第一个为横轴,第二个参数为纵轴画图
    
    plt.show() #显示图

    #但是上面的图中横坐标很不清楚,改变其显示方式,以及加上标题。
    plt.figure()#以这个开始,创建figure的一个对象
    
    plt.plot(data['date'], data['values']) #plot()的里面的参数,第一个为横轴,第二个参数为纵轴画图
    
    plt.xticks(rotation = 45) #将横坐标的斜向45°显示
    
    plt.xlabel('date') #给横轴一个标签
    
    plt.ylabel('values') #给纵轴一个标签
    
    plt.title('working-trend with years') #给整个图一个题目
    
    plt.show() #显示图

    二、子图的操作

    import matplotlib.pyplot as plt
    
    fig = plt.figure() #以这个开始,创建figure的一个对象
    
    ax1 = fig.add_subplot(2, 2, 1) #建立子图,add_subplot中的参数2,2表示建立2*2的四个子图,最后一个参数1表示四个子图中的第一个。
    
    ax3 = fig.add_subplot(2, 2, 3) #最后一个参数3表示四个子图中的第三个
    
    ax4 = fig.add_subplot(2, 2, 4) #最后一个参数4表示四个子图中的第四个
     
    plt.show()

    import numpy as np
    import matplotlib.pyplot as plt
    
    fig = plt.figure(figsize = (3, 3)) #figsize指定大小,第一个参数表示长度,第二个参数表示宽度
    
    ax1 = fig.add_subplot(2, 2, 1)
    
    ax4 = fig.add_subplot(2, 2, 4)
    
    ax1.plot(np.arange(10), np.arange(10)) #画出子图ax1所需要的图
    
    ax4.plot(np.random.random(10), np.arange(10)) #画出子图ax4所需要的图
    
    plt.show()

    #如果我想要在一个图上画几条线呢
    
    x = np.linspace(-1, 1, 10) #使用np.linspace定义x:范围是(-1,1);个数是10. 仿真一维数据组(x ,y)表示曲线1.
    
    y1 = 2*x
    
    y2 = x**2
    
    plt.figure(figsize = (4, 3)) #figsize指定大小,第一个参数表示长度,第二个参数表示宽度
    
    plt.plot(x, y1, color = 'red', linewidth = 1.0, linestyle = '--', label="y1") #其中label是标注,但想要标注后在图中显示,用legend的表示
    
    plt.plot(x, y2, color = 'blue', linewidth = 1.0, linestyle = '-', label = 'y2')
    
    plt.xlabel('x')
    
    plt.ylabel('y')
    
    plt.legend(loc = 'best') #best表示最好的显示方式,还有其他指定的方式
    
    plt.show()

    其中’loc’参数有多种,’best’表示自动分配最佳位置,其余的如下:

     'best' : 0,          
     'upper right'  : 1,
     'upper left'   : 2,
     'lower left'   : 3,
     'lower right'  : 4,
     'right'        : 5,
     'center left'  : 6,
     'center right' : 7,
     'lower center' : 8,
     'upper center' : 9,
     'center'       : 10,


    三、条形图与散点图
    #条形图的绘制
    import matplotlib.pyplot as plt
    import numpy as np
    
    n = 12
    
    X = np.arange(n)
    
    Y1 = (1-X/float(n))*np.random.uniform(0.5, 1.0, n) #Y是相应的均匀分布的随机数据
    
    Y2 = (1-X/float(n)*np.random.uniform(0.5, 1.0, n))
    
    plt.figure(figsize = (8, 6))
    
    plt.bar(X, +Y1, facecolor = '#9999ff', edgecolor = 'white') #facecolor表示主体颜色,具体的其他颜色表示可以百度,edgecolor表示边框颜色
    
    plt.bar(X, -Y2, facecolor = '#ff9999', edgecolor = 'white')
    
    plt.xlim(-0.5, n)
    
    plt.ylim(-1.25, 1.25)
    
    plt.xticks(())
    
    plt.yticks(())
    
    #在条形图上标注值
    for x, y in zip(X, Y1): #zip的意思就是可以将每个数值分别赋值
        plt.text(x+0.1, y+0.05, '%.2f' % y, ha = 'center', va = 'bottom') #x+0.4向右偏移0.4, y+0.05向上偏0.05, '%.2f' % y的意思是y保留两位小数。
    
    for x, y in zip(X, Y2):
        plt.text(x+0.1, -y-0.05, '%.2f' % y, ha = 'center', va = 'top') #ha = 'center'的意思是横向居中对齐,va = 'top'的意思是纵向顶部对齐 
        
    plt.show()

    #散点图的绘制
    
    import matplotlib.pyplot as plt
    import numpy as np
    
    n = 1024
    
    #生成1024个呈标准正态分布的二维数据组 (平均数是0,方差为1) 作为一个数据集
    X = np.random.normal(0 , 1, n) #每个点的x值
    
    Y = np.random.normal(0, 1, n) #每个点的y值
    
    T = np.arctan2(Y, X) #这个是颜色的显示值
    
    plt.scatter(X, Y, s = 100, c = T, alpha = 0.5) #s表示size, c表示color, alpha表示透明度
    
    plt.xlim(-1.5, 1.5) #x轴的限制
    
    plt.ylim(-1.5, 1.5) #y轴的限制
    
    plt.xticks(()) #消除x轴的标注
    
    plt.yticks(()) #消除y轴的标注
    
    plt.show()

    四、柱形图

    #柱形图
    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    
    norm_reviews = pd.read_csv("F:\ml\机器学习\01\2.csv")
    
    fig, ax = plt.subplots()
    
    ax.hist(norm_reviews['Fandango_Ratingvalue'], bins = 20) #bins进行均匀的分布,默认是10
    
    
    plt.show()

    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    
    norm_reviews = pd.read_csv("F:\ml\机器学习\01\2.csv")
    
    fig, ax = plt.subplots()
    
    ax.hist(norm_reviews['Fandango_Ratingvalue'], range = (4, 5), bins = 20) #只显示4-5区间,总的还是20条,只是在4-5之间是8条
    
    plt.show()

  • 相关阅读:
    go资料
    typescript 装饰器 decorator
    【转】typescript class decorator装饰器
    【转】Best way to get result count before LIMIT was applied
    DirectX11 采样状态对象
    React通过redux-persist持久化数据存储
    禁止网页查看源代码
    css3 动画 -- 加载动画 Loader
    css3 动画 -- 旋转线条 rotate_line
    读书打卡:《微信互联网平民创业》
  • 原文地址:https://www.cnblogs.com/hyan0913/p/11391841.html
Copyright © 2011-2022 走看看