zoukankan      html  css  js  c++  java
  • python包matplotlib绘制图像

    使用matplotlib绘制图像

    import matplotlib.pyplot as plt
    from matplotlib.pyplot import MultipleLocator
    import numpy as np
    import seaborn as sns
    
    #描绘曲线图,可以对通过np.percentile获得数据的百分位
    def draw_percentile(x,y):
        a=np.arange(0,1000)
        #获得a中91%分位的数值
        t=np.percentile(a,91)
        print(t)
    
    
        # x、y是两个list
        # 创建一个点数为 8 x 6 的窗口, 并设置分辨率为 80像素/每英寸
        plt.figure(figsize=(16, 8), dpi=80)
        # 再创建一个规格为 1 x 1 的子图
        plt.subplot(1, 1, 1)
        plt.title('voice length ratio ',fontsize=24)
        #设置坐标轴字体的大小
        plt.tick_params(axis='both', which='major', labelsize=14)
        # 绘制曲线, 宽度为3,线的颜色为紫罗兰色
        plt.plot(x, y, linewidth=3.0,color="#87CEFA")
        #设置横坐标的标签范围
        plt.xlim(0, 300)
        # 设置横轴标签
        plt.xlabel('voice length(s)',fontsize=14)
        # 设置纵轴标签
        plt.ylabel('ratio(%)',fontsize=14)
    
        # 把x轴的刻度间隔设置为20,并存在变量里
        x_major_locator = MultipleLocator(20)
        # 把y轴的刻度间隔设置为10,并存在变量里
        y_major_locator = MultipleLocator(10)
    
        # ax为两条坐标轴的实例
        ax = plt.gca()
    
        # 把x轴的主刻度设置为1的倍数
        ax.xaxis.set_major_locator(x_major_locator)
        ax.yaxis.set_major_locator(y_major_locator)
    
        plt.show()
    
    #绘制直方图的两种方式
    def draw_data_distribution():
        np.random.seed(444)
        d = np.random.laplace(loc=15, scale=3, size=100)
    
        #绘制直方图,纵坐标对应的是频数
        #bins设置分箱个数,可为 auto
        number_bins, boundary_bins, patches = plt.hist(x=d, bins=10, color='#0504aa',
                                    alpha=0.7, rwidth=0.85)
        print('频数:',number_bins)
        print('分箱边界:',boundary_bins)
        plt.xlabel('data')
        plt.ylabel('frequency')
        plt.show()
    
        #单变量分布的直方图和kde同时绘制出来
        sns.distplot(d,kde=True)
        plt.xlabel('data')
        plt.ylabel('kde Density')
        plt.show()
    
    if __name__=='__main__':
    
        draw_data_distribution()

    绘制直方图

    import matplotlib.pyplot as plt
    import matplotlib
    
    
    def draw_picture(label_list, num_list1):
        # 设置中文字体和负号正常显示
        matplotlib.rcParams['font.sans-serif'] = ['SimHei']
        matplotlib.rcParams['axes.unicode_minus'] = False
    
        x = range(len(num_list1))
        """
        绘制条形图
        left:长条形中点横坐标
        height:长条形高度
        长条形宽度,默认值0.8
        label:为后面设置legend准备
        """
        plt.figure(figsize=(10, 5))  # 画布大小,前一个值表示宽度,第二个值表示高度
        rects1 = plt.bar(x=x, height=num_list1, width=0.4, alpha=0.8, color='red', label="一部门")
        plt.ylim(0, 50)  # y轴取值范围
        plt.ylabel("频次")
        """
        设置x轴刻度显示值
        参数一:中点坐标
        参数二:显示值
        """
        plt.xticks([index + 0.2 for index in x], label_list)
        plt.xticks(rotation=270)  # 横坐标旋转的角度
        plt.xlabel("数量")
        plt.title("频度统计")
        plt.legend()  # 设置题注
        # 编辑文本
        for rect in rects1:
            height = rect.get_height()
            plt.text(rect.get_x() + rect.get_width() / 2, height + 1, str(height), ha="center", va="bottom")
        # plt.savefig('./test2.jpg')
        plt.show()
    
    
    if __name__ == '__main__':
        label_list = ['2014', '2015', '2016', '2017']  # 横坐标刻度显示值
        label_list = [20, 30, 15, 35]  # 纵坐标值1
        draw_picture(label_list, label_list)
  • 相关阅读:
    DB数据导出工具分享
    使用批处理脚本愉快的清理缓存
    git常用命令记录
    使用bat脚本部署hexo到coding和github
    初次尝试Linux并记录一二
    js实用方法记录-指不定哪天就会用到的js方法
    js实用方法记录-简单cookie操作
    js实用方法记录-js动态加载css、js脚本文件
    使用node自动生成html并调用cmd命令提交代码到仓库
    express使用记录
  • 原文地址:https://www.cnblogs.com/AntonioSu/p/11986094.html
Copyright © 2011-2022 走看看