1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 使用matplotlib绘制图形(条形图 饼状图 散点图 直方图)

使用matplotlib绘制图形(条形图 饼状图 散点图 直方图)

时间:2022-07-13 19:39:40

相关推荐

使用matplotlib绘制图形(条形图 饼状图 散点图 直方图)

安装

pip install matplotlib

图形的基础绘制

from matplotlib import pyplot as plt# 设置图形大小,figure图形图像的意思,在这里指的是我们画的图fig = plt.figure(figsize=(6, 3), dpi=80) # 在图像模糊的时候可以传入dpi参数,让图片清晰# 数据在x和y轴的位置是一个可迭代对象# x轴和Y轴的数据一起组成了所有要绘制出的坐标x = range(2, 26, 2)y = [15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15]# 设置x轴刻度plt.xticks(x)# 设置y轴坐标_ytick_lables = [i / 2 for i in range(0, 60)]plt.yticks(_ytick_lables[::3])plt.plot(x, y) # 绘制 传入X和y,通过plot绘制出折线图plt.savefig('t1.svg') # 保存 svg矢量图,放大无锯齿plt.show() # 显示 在执行程序的时候展示图形

折线图

import randomfrom matplotlib import font_managerfrom matplotlib import pyplot# 第一种设置字体# import matplotlib# font = {'family': 'MicroSoft Yahei',# 'weight': 'bold',# 'size': '10'}# matplotlib.rc('font', **font) # 将字体dict作为kwargs传入# matplotlib.rc('font',family='MicroSoft Yahei',weight='bold',size='20')# 第二种设置字体# my_font = font_manager.FontProperties(fname='甜心音乐艺术.ttf', size='10')x = range(120)a = [random.randint(18, 30) for i in range(120)]# fig = pyplot.figure(figsize=(20, 8), dpi=80)# 调整x轴的刻度_x = list(x)_xtick_lables = ['10:{}'.format(i) for i in range(60)]_xtick_lables += ['11点{}分'.format(i) for i in range(60)]# 添加描述信息pyplot.xlabel('时间', fontproperties=my_font, size='15')pyplot.ylabel('温度 单位(℃)', fontproperties=my_font, size='15')pyplot.title('10点到12点的温度变化', fontproperties=my_font, size='20', color='red')# 取步长,数字和字符串一一对应,数据的长度一样pyplot.xticks(_x[::5], _xtick_lables[::5], rotation=45, fontproperties=my_font) # 旋转90pyplot.plot(x, a)pyplot.show()

绘制多条折线图

from matplotlib import pyplot, font_managermy_font = font_manager.FontProperties(fname='甜心音乐艺术.ttf')man = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 4, 3, 3, 1, 1, 1]woman = [1, 0, 3, 1, 2, 3, 3, 2, 1, 2, 3, 4, 5, 6, 7, 2, 2, 2, 1]x = range(11, 30)pyplot.xlabel('人数', fontproperties=my_font)pyplot.ylabel('年龄', fontproperties=my_font)pyplot.title('年龄与交朋友的数量关系', fontproperties=my_font, size='20', color='blue')# 绘制网格pyplot.grid(alpha=0.3, linestyle='--')_x = x_xticks_label = ['{}岁'.format(i) for i in range(11, 30)]pyplot.xticks(_x, _xticks_label, fontproperties=my_font, rotation=30)pyplot.plot(x, man, label='男人', linewidth=2)pyplot.plot(x, woman, label='女人', color='cyan', linestyle='-.')# 添加图例pyplot.legend(prop=my_font, loc=2) # loc选择位置# 添加标注pyplot.text(25, 7, '女最高', fontdict={'size': '24', 'color': 'b','fontproperties':my_font})# 添加水印pyplot.text(x=15, # 水印开头左下角对应的X点y=3, # 水印开头左下角对应的Y点s="msadad", # 水印文本fontsize=50, # 水印大小color="gray", # 水印颜色alpha=0.4,# fontproperties=my_font,) # 水印是通过透明度控制的pyplot.show()

条形图

from matplotlib import font_managerfrom matplotlib import pyplot as plta = ['战狼2', '哪吒之魔童降世', '流浪地球', '复仇者联盟4:终局之战', '红海行动', '美人鱼', '唐人街探案2','我和我的祖国', '我不是药神', '中国机长', '速度与激情8', '西虹市首富', '速度与激情7', '捉妖记','复仇者联盟:无限战争', '捉妖记2', '羞羞的铁拳', '疯狂的外星人', '海王', '变形金刚4:绝迹重生']b = [56.39, 49.34, 46.18, 42.05, 36.22, 33.9, 33.71, 31.46, 30.75, 28.84,26.49, 25.27, 24.26, 24.21, 23.7, 22.19, 21.9, 21.83, 19.97, 19.79]fig = plt.figure(figsize=(15, 7), dpi=80)plt.grid(alpha=0.3)my_font = font_manager.FontProperties(fname='皇冠字体.ttf')plt.title('5月20日电影房排行', fontproperties=my_font, size=20, color='orange')plt.xlabel('票房:(单位:亿)', fontproperties=my_font)plt.yticks(range(len(a)), a, fontproperties=my_font)plt.barh(a, b, height=0.755, color='orange')plt.show()

绘制多条条形图

from matplotlib import font_managerfrom matplotlib import pyplot as plta = ['猩猿崛起3:终极之战', '敦刻尔克', '蜘蛛侠:英雄归来', '战狼2']b_16 = [15746, 312, 4497, 319]b_15 = [12357, 156, 2045, 168]b_14 = [2358, 399, 2358, 362]my_font = font_manager.FontProperties(fname='皇冠字体.ttf')bar_width = 0.2plt.ylabel('票房(单位:万元)', fontproperties=my_font)plt.title('9月14——15日票房', fontproperties=my_font, size='20', color='blue')# 这是x轴刻度x_14 = list(range(len(a)))x_15 = [i + bar_width for i in x_14]x_16 = [i + bar_width * 2 for i in x_14]plt.xticks(x_15, a, fontproperties=my_font)# 绘制条形图plt.bar(x_14, b_14, width=bar_width,label='14日')plt.bar(x_15, b_15, width=bar_width,label='15日')plt.bar(x_16, b_16, width=bar_width,label='16日')# 添加图例plt.legend(prop=my_font)plt.show()

散点图

from matplotlib import font_managerfrom matplotlib import pyplot as pltsanyue = [10,9,10,12,8,13,13,8,5,10,12,10,10,12,12,11,13,16,16,16,13,19,15,16,20,8,12,7 ,15,9,13]siyue = [10,4,4,10,9,12,10,15,15,14,10,15,14,21,22,18,17,19,20,15,11,15,14,16,19,22,23,23,25,27]fig = plt.figure(figsize=(15, 5), dpi=80)plt.grid(alpha=0.3)my_font = font_manager.FontProperties(fname='甜心音乐艺术.ttf')plt.title('3-4月最高温度(静宁)', fontproperties=my_font, size=20, color='#7EC0EE')plt.ylabel('温度:(单位:℃)', fontproperties=my_font)x_3 = range(1, 32)x_4 = range(41, 71)_x = list(x_3) + list(x_4)_xticks_labels = ['3月{}日'.format(i) for i in x_3]_xticks_labels += ['4月{}日'.format(i - 40) for i in x_4]plt.xticks(_x[::2], _xticks_labels[::2], fontproperties=my_font, rotation=90)plt.scatter(x_3, sanyue,label='3月份')plt.scatter(x_4, siyue,label='4月份')plt.legend(prop=my_font,loc=9)plt.show()

直方图

import randomfrom matplotlib import font_managerfrom matplotlib import pyplot as pltmy_font = font_manager.FontProperties(fname='华康少女字体完整版(1).ttf')plt.title('电影时长频率次数', fontproperties=my_font, size='20', color='blue')random.seed(1)a = [random.randint(40, 150) for i in range(250)]# print(a)plt.grid()# 计算组距d = 5num_bins = int((max(a) - min(a)) // d)print(num_bins)plt.xticks(range(min(a), max(a) + d, d))plt.hist(a, num_bins, density=True) # 显示出现的次数频率plt.show()

饼状图

import xlrdfrom matplotlib import pyplot as pltdata = xlrd.open_workbook('C:\\Users\\gelan\\Desktop\\student.xlsx')print(data) # <xlrd.book.Book object at 0x000001EBC75C00C8>table = data.sheets()[0] # 获取第一个sheetprint(table) # <xlrd.sheet.Sheet object at 0x000001EBC75A4048>print(table.nrows) # 获取表的行数print(table.ncols) # 获取列数print(table.row_values(3)) # 获取第4行数据print(type(table.col_values(1))) # 获取第2列数据name = table.col_values(0)name.pop(0)cj = table.col_values(1)cj.pop(0)print(name)# 设置显示中文的字体plt.rcParams['font.sans-serif'] = ['simhei']plt.xticks(range(len(name)), name, )explode = [0, 0.1, 0, 0]# labels标签参数# x对用的数据列表# autopct 显示每一个区域占得比例# explode 突显出某一块的# shadow=True 显示阴影plt.pie(labels=name, x=cj, autopct='%.0f%%', explode=explode, shadow=True)plt.show()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。