1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python实战系列(三)——基于Numpy和Matplotlib的图表绘制(折线图和堆积柱状图)

Python实战系列(三)——基于Numpy和Matplotlib的图表绘制(折线图和堆积柱状图)

时间:2022-11-07 23:52:38

相关推荐

Python实战系列(三)——基于Numpy和Matplotlib的图表绘制(折线图和堆积柱状图)

学年第1学期人文地理学展示所负责的珠三角工业化现状出图部分,基于python进行简单的统计分析和图像绘制,本系列主要用于记录代码,大家可进行参考,初学者,Python编码习惯不好,见谅。

import numpy as npimport xlrdimport matplotlib.pyplot as pltdata = xlrd.open_workbook(r'E:\\UniversityGrade3\\Human_Geography\\小组作业\\data.xls')table = data.sheets()[0]gdp = table.col_values(2)cityrate = table.col_values(3)cy1 = table.col_values(4)cy2 = table.col_values(5)cy3 = table.col_values(6)cy1people = table.col_values(8)gdp = (np.array(gdp))/10000cityrate = np.array(cityrate)cy1 = np.array(cy1)cy2 = np.array(cy2)cy3 = np.array(cy3)cy1people = np.array(cy1people)# 绘制准备config = {# 图表绘制初始字体字典设置"font.family": "serif", # 使用衬线体"font.serif": ["Microsoft YaHei"], # 全局默认使用衬线宋体"font.size": 12,# "font.weight": "bold","axes.unicode_minus": False,"mathtext.fontset": "stix", # 设置 LaTeX 字体,stix 近似于 Times 字体}plt.rcParams.update(config)ticklabels_style = {# 刻度绘制初始字体字典设置"fontname": "Arial","fontsize": 10,}labels_city = np.array(np.arange(0, 10, 1))# shymean gzymean# x_year = np.arange(len(labels_year))width = 0.5fig, ax1 = plt.subplots()# rects1 = ax1.bar(labels_city - width, cy1, width, label='第一产业占比', color='#63E398', ec='black', lw=0.5)# rects2 = ax1.bar(labels_city , cy2, width, label='第二产业占比', color='#F1D77E', ec='black', lw=0.5)# rects3 = ax1.bar(labels_city + width, cy3, width, label='第三产业占比', color='#9DC3E7', ec='black', lw=0.5)plt.bar(labels_city , cy1, width, label='第一产业', color='#63E398', ec='black', lw=0.75)plt.bar(labels_city , cy2, width, bottom=cy1, label='第二产业', color='#F1D77E', ec='black', lw=0.75)plt.bar(labels_city , cy3, width, bottom=cy2+cy1,label='第三产业', color='#9DC3E7', ec='black', lw=0.75)ax1.grid(axis='y', linestyle='-.', alpha=0.1)ax1.set_title('珠三角及珠三角九市产业结构图', weight='bold', fontsize=16)ax1.set_ylabel('产业占比(%)', fontsize=14)# ax1.set_ylabel('产业占比', weight='bold', fontsize=14)ax1.set_ylim(bottom=0, top=110)ax1.set_yticks(np.arange(0, 100.01, step=10))# plt.yticks(fontsize=10, weight='bold')plt.yticks(fontsize=10)ax1.set_xlabel('城市', fontsize=14)# ax1.set_xlabel('城市', weight='bold', fontsize=14)ax1.set_xticks(np.array(np.arange(0, 10, 1)),['广州', '佛山', '肇庆', '深圳', '东莞', '惠州', '珠海', '中山', '江门', '珠三角'])# plt.xticks(fontsize=10, weight='bold')plt.xticks(fontsize=10)plt.gca().spines['left'].set_linewidth(1.5)plt.gca().spines['bottom'].set_linewidth(1.5)plt.gca().spines['right'].set_linewidth(1.5)plt.gca().spines['top'].set_linewidth(1.5)# ax1.spines['top'].set_visible(False)ax1.tick_params(direction='out', width=2)ax1.tick_params(direction='out', width=2)# legend_form = {'weight': 'bold', 'size': 20}ax1.legend(fontsize=8, frameon=False, ncol=3, loc='upper left')# ax1.bar_label(rects1, padding=3, fmt='%.1f', fontsize=8, weight='bold')# ax1.bar_label(rects1, padding=5, fmt='%.1f', fontsize=8)# ax1.bar_label(rects2, padding=5, fmt='%.1f', fontsize=8)# ax1.bar_label(rects3, padding=5, fmt='%.1f', fontsize=8)ax2 = plt.twinx()plt.plot(np.array(np.arange(0, 10, 1)), cy1people, '-', c="#EF7A6D", label="从事第一产业人口比重", marker="o", linewidth=2)for a, b in zip(np.array(np.arange(0, 10, 1)), cy1people):plt.text(a, b+1, '%.3f' % b, ha='center', va='bottom', fontsize=8, color='black', weight='bold')ax2.set_ylabel('从事第一产业人口比重(%)', fontsize=14)# y轴标题ax2.spines['top'].set_visible(False)ax2.set_yticks(np.arange(0, 50.01, step=5))# y轴刻度# ax2.axis["y"].set_axisline_style("->", size=1.5)ax2.set_ylim(bottom=0, top=55.01)ax2.legend(fontsize=8, frameon=False, ncol=1, loc='upper right')# 图例ax2.tick_params(direction='out', width=2)plt.savefig('珠三角及珠三角九市产业结构图.jpg',dpi=600)

import numpy as npimport xlrdimport matplotlib.pyplot as pltdata = xlrd.open_workbook(r'E:\\UniversityGrade3\\Human_Geography\\小组作业\\data.xls')table = data.sheets()[0]gdp = table.col_values(2)cityrate = table.col_values(3)cy1 = table.col_values(4)cy2 = table.col_values(5)cy3 = table.col_values(6)cy1people = table.col_values(8)gdp = (np.array(gdp))/10000cityrate = np.array(cityrate)cy1 = np.array(cy1)cy2 = np.array(cy2)cy3 = np.array(cy3)cy1people = np.array(cy1people)# 绘制准备config = {# 图表绘制初始字体字典设置"font.family": "serif", # 使用衬线体"font.serif": ["Microsoft YaHei"], # 全局默认使用衬线宋体"font.size": 12,# "font.weight": "bold","axes.unicode_minus": False,"mathtext.fontset": "stix", # 设置 LaTeX 字体,stix 近似于 Times 字体}plt.rcParams.update(config)ticklabels_style = {# 刻度绘制初始字体字典设置"fontname": "Arial","fontsize": 10,}figure, ax1 = plt.subplots()plt.plot(np.array(np.arange(0, 10, 1)), gdp, '-', c="lightcoral", label="人均GDP", marker="s", linewidth=1.5)ax1.grid(axis='y', linestyle='-.', alpha=0.3)# 背景网格ax1.set_title('珠三角人均GDP与城镇化率', fontsize=16, weight='bold')# 图标总标题# ax1.set_xlabel('城市', weight='bold', fontsize=14)# x轴标题ax1.set_xlabel('城市', fontsize=14)# x轴标题ax1.set_xticks(np.array(np.arange(0, 10, 1)),['广州', '佛山', '肇庆', '深圳', '东莞', '惠州', '珠海', '中山', '江门', '珠三角'])# ax1.set_ylim(bottom=-2.5, top=2.51)# y轴范围ax1.set_yticks(np.arange(5, 18.01, step=1))# y轴刻度# ax1.set_ylabel('人均GDP(万元)', weight='bold', fontsize=14)# y轴标题ax1.set_ylabel('人均GDP(万元)', fontsize=14)# y轴标题ax1.legend(fontsize=10, frameon=False, ncol=1, loc='upper left')# 图例plt.gca().spines['left'].set_linewidth(1.5)# 左边框宽度plt.gca().spines['bottom'].set_linewidth(1.5)# 下边框宽度plt.gca().spines['right'].set_linewidth(1.5)# 右边框宽度plt.gca().spines['top'].set_linewidth(1.5)# 上边框宽度# plt.show(block=True)ax2 = plt.twinx()plt.plot(np.array(np.arange(0, 10, 1)), cityrate, '-', c="lightskyblue", label="城镇化率", marker="o", linewidth=1.5)# ax2.grid(axis='y', linestyle='-.', alpha=0.1)# 背景网格# ax2.set_title('珠三角人均GDP与城镇化率', fontsize=16, weight='bold')# 图标总标题# ax2.set_xlabel('城市', weight='bold', fontsize=14)# x轴标题ax2.set_xlabel('城市', fontsize=14)# x轴标题ax2.set_xticks(np.array(np.arange(0, 10, 1)),['广州', '佛山', '肇庆', '深圳', '东莞', '惠州', '珠海', '中山', '江门', '珠三角'])# ax2.set_ylim(bottom=-2.5, top=2.51)# y轴范围ax2.set_yticks(np.arange(40, 101, step=5))# y轴刻度# ax2.set_ylabel('城镇化率(%)', weight='bold', fontsize=14)# y轴标题ax2.set_ylabel('城镇化率(%)', fontsize=14)# y轴标题ax2.legend(fontsize=10, frameon=False, ncol=1, loc='upper right')# 图例plt.savefig('珠三角人均GDP与城镇化率.jpg',dpi=600)

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