zoukankan      html  css  js  c++  java
  • matplotlib基础汇总_03

    四图
    直方图
    
    【直方图的参数只有一个x!!!不像条形图需要传入x,y】
    hist()的参数
    bins
    可以是一个bin数量的整数值,也可以是表示bin的一个序列。默认值为10
    normed
    如果值为True,直方图的值将进行归一化处理,形成概率密度,默认值为False
    color
    指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色
    orientation
    通过设置orientation为horizontal创建水平直方图。默认值为vertical
    
    
    x = np.random.randint(5,size = 5)
    display(x)
    plt.hist(x,histtype = 'bar'); # 默认绘制10个bin
    plt.show()
    普通直方图/累计直方图
    
    n = np.random.randn(10000)
    
    fig,axes = plt.subplots(1,2,figsize = (12,4))
    axes[0].hist(n,bins = 50)#普通直方图
    axes[0].set_title('Default histogram')
    axes[0].set_xlim(min(n),max(n))
    
    axes[1].hist(n,bins = 50,cumulative = True)# 累计直方图
    axes[1].set_title('Cumulative detailed histogram')
    axes[1].set_xlim(min(n),max(n))

     

    正太分布
    
    u = 100 #数学期望
    s = 15 #方差
    x = np.random.normal(u,s,1000) # 生成正太分布数据
    
    ax = plt.gca() #获取当前图表
    ax.set_xlabel('Value')
    ax.set_ylabel('Frequency') #设置x,y轴标题
    
    ax.set_title("Histogram normal u = 100 s = 15") #设置图表标题
    
    ax.hist(x,bins = 100,color = 'r',orientation='horizontal')
    plt.show()

     

    条形图
    bar 
    
    # 第一个参数为条形左下角的x轴坐标,第二个参数为条形的高度;
    # matplotlib会自动设置条形的宽度,本例中条形宽0.8
    plt.bar([1, 2, 3], [3, 2, 5]); 
    plt.show()
    # width参数设置条形宽度;color参数设置条形颜色;bottom参数设置条形底部的垂直坐标
    plt.bar([1, 2, 3], [3, 2, 5], width=0.5, color='r', bottom=1);
    plt.ylim([0, 7])
    plt.show()

     

    # 例子:绘制并列条形图
    
    data1 = 10*np.random.rand(5)
    data2 = 10*np.random.rand(5)
    data3 = 10*np.random.rand(5)
    
    locs = np.arange(1, len(data1)+1)
    width = 0.27
    
    plt.bar(locs, data1, width=width);
    plt.bar(locs+width, data2, width=width, color='red');
    plt.bar(locs+2*width, data3, width=width, color='green') ;
    plt.xticks(locs + width*1, locs);
    plt.show()

     

    barh
    
    plt.barh([1, 2, 3], [3, 2, 5],height = 0.27,color = 'yellow');
    plt.show()

     

    饼图
    【饼图也只有一个参数x!】
    pie()
    饼图适合展示各部分占总体的比例,条形图适合比较各部分的大小
    plt.figure(figsize = (4,4)) # 饼图绘制正方形
    x = [45,35,20] #百分比
    labels = ['Cats','Dogs','Fishes'] #每个区域名称
    plt.pie(x,labels = labels)
    plt.show()

     

    plt.figure(figsize=(4, 4));
    x = [0.1, 0.2, 0.3] # 当各部分之和小于1时,则不计算各部分占总体的比例,饼的大小是数值和1之比
    labels = ['Cats', 'Dogs', 'Fishes']
    plt.pie(x, labels=labels); # labels参数可以设置各区域标签
    plt.show()

     

    # labels参数设置每一块的标签;labeldistance参数设置标签距离圆心的距离(比例值)
    # autopct参数设置比例值的显示格式(%1.1f%%);pctdistance参数设置比例值文字距离圆心的距离
    # explode参数设置每一块顶点距圆形的长度(比例值);colors参数设置每一块的颜色;
    # shadow参数为布尔值,设置是否绘制阴影
    
    plt.figure(figsize=(4, 4));
    x = [4, 9, 21, 55, 30, 18]
    labels = ['Swiss', 'Austria', 'Spain', 'Italy', 'France', 'Benelux']
    explode = [0.2, 0.1, 0, 0, 0.1, 0]
    colors = ['r', 'k', 'b', 'm', 'c', 'g']
    plt.pie(x, 
            labels=labels, 
            labeldistance=1.2,
            explode=explode, 
            colors=colors, 
            autopct='%1.1f%%', 
            pctdistance=0.5, 
            shadow=True);
    plt.show()

     

    散点图
    【散点图需要两个参数x,y,但此时x不是表示x轴的刻度,而是每个点的横坐标!】
    scatter()
    # s参数设置散点的大小;c参数设置散点的颜色;marker参数设置散点的形状
    x = np.random.randn(1000)
    y = np.random.randn(1000)
    size = 50*abs(np.random.randn(1000))
    colors = np.random.randint(16777215,size = 1000)
    
    
    li = []
    for color in colors:
        a = hex(color)
        str1 = a[2:]
        l = len(str1)
        for i in range(1,7-l):
            str1 = '0'+str1
        str1 = "#" + str1
        li.append(str1)
    
    plt.scatter(x, y,s = size, c=li, marker='d');
    plt.show()

     

    import numpy as np
    import pandas as pd
    from pandas import Series,DataFrame
    
    import matplotlib.pyplot as plt
    
    x = np.random.randn(1000)
    
    y1 = np.random.randn(1000)
    y2 = 1.2 + np.exp(x) #exp(x) 返回的是e的x次方
    
    ax1 = plt.subplot(121)
    plt.scatter(x,y1,color = 'purple',alpha = 0.3,edgecolors = 'white',label = 'no correl')
    plt.xlabel('no correlation')
    plt.grid(True)
    plt.legend()
    
    
    ax2 = plt.subplot(122)
    plt.scatter(x,y2,color = 'green',alpha = 0.3,edgecolors = 'gray',label = 'correl')
    plt.xlabel('correlation')
    plt.grid(True)
    plt.legend()
    
    plt.show()

     

    图形内的文字、注释、箭头
    文字
    
    x = np.arange(0, 7, .01)
    y = np.sin(x)
    plt.plot(x, y);
    plt.text(0.1, -0.04, 'sin(0)=0'); # 位置参数是坐标
    plt.show()

     

    注释
    
    
    # xy参数设置箭头指示的位置,xytext参数设置注释文字的位置
    # arrowprops参数以字典的形式设置箭头的样式
    # width参数设置箭头长方形部分的宽度,headlength参数设置箭头尖端的长度,
    # headwidth参数设置箭头尖端底部的宽度,shrink参数设置箭头顶点、尾部与指示点、注释文字的距离(比例值)
    
    y = [13, 11, 13, 12, 13, 10, 30, 12, 11, 13, 12, 12, 12, 11, 12]
    plt.plot(y);
    plt.ylim(ymax=35); # 为了让注释不会超出图的范围,需要调整y坐标轴的界限
    plt.annotate('this spot must really
    mean something', xy=(6, 30), xytext=(8, 31.5),
                 arrowprops=dict(width=15, headlength=20, headwidth=20, facecolor='black', shrink=0.1));
    plt.show()

     

    # 生成3个正态分布数据数据集
    x1 = np.random.normal(30, 3, 100)
    x2 = np.random.normal(20, 2, 100)
    x3 = np.random.normal(10, 3, 100)
    
    # 绘制3个数据集,并为每个plot指定一个字符串标签
    plt.plot(x1, label='plot') # 如果不想在图例中显示标签,可以将标签设置为_nolegend_
    plt.plot(x2, label='2nd plot')
    plt.plot(x3, label='last plot')
    
    # 绘制图例
    plt.legend(bbox_to_anchor=(0, 1.02, 1, 0.102), # 指定边界框起始位置为(0, 1.02),并设置宽度为1,高度为0.102
               ncol=3, # 设置列数为3,默认值为1
               mode="expand", # mode为None或者expand,当为expand时,图例框会扩展至整个坐标轴区域
               borderaxespad=0.) # 指定坐标轴和图例边界之间的间距
    
    # 绘制注解
    plt.annotate("Important value", # 注解文本的内容
                 xy=(55,20), # 箭头终点所在位置
                 xytext=(5, 38), # 注解文本的起始位置,箭头由xytext指向xy坐标位置
                 arrowprops=dict(arrowstyle='->')); # arrowprops字典定义箭头属性,此处用arrowstyle定义箭头风格

     

    箭头

     


    2020-05-24

  • 相关阅读:
    maven常用插件
    Java反编译工具:Java Decompiler
    好看的电影
    我说
    Fisher准则一维聚类
    Java获取函数参数名称
    推荐几个字体生成网站
    Python中的两种路径
    轻量级数据库简介
    Solr Wiki文档
  • 原文地址:https://www.cnblogs.com/hany-postq473111315/p/12950922.html
Copyright © 2011-2022 走看看