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)
原文地址:https://www.cnblogs.com/AntonioSu/p/11986094.html