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:长条形高度 width:长条形宽度,默认值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)