def img23_qxydnlzs(self): """ # 图23 各区县用电量降幅较大养老机构分布 :return: """ style = StyleUtil() style.set_figure() ds_pjydbhl = pd.read_excel(f'{listdata_addr}各养老院平均用电变化率表1.xlsx') ds_pjydbhl = ds_pjydbhl[ds_pjydbhl['平均用电变化率(%)'] <= -90] pjydbhl_jd = ds_pjydbhl[['地市', '养老院名称']] pjydbhl_jd = pjydbhl_jd.groupby('地市').count() pjydbhl_jd = DataFrame(pjydbhl_jd) pjydbhl_jd = pjydbhl_jd.sort_values(by='养老院名称', axis=0, ascending=False) pjydbhl_jd.reset_index(inplace=True) print(pjydbhl_jd) pjydbhl_jd['养老院名称'] = pjydbhl_jd['养老院名称'].map(lambda x: math.trunc(x)) ax1 = plt.figure().gca() ax1.yaxis.set_major_locator(MaxNLocator(integer=True)) x2 = pjydbhl_jd['地市'] y2 = pjydbhl_jd['养老院名称'] plt.bar(x2, y2, 0.25, color="#4e79a7") plt.ylabel("养老机构数(个)") for x, y in zip(pjydbhl_jd['地市'], pjydbhl_jd['养老院名称']): plt.text(x, y, y, ha='center', va='bottom', fontsize=10) # plt.ylim(0,3) mu = ModelUtil() mu.save_pic(plt, '图23 各区县用电量降幅较大养老机构分布')
def draw_ggmydbhl(self): """ # 各规模养老机构平均用电影响率 :return: """ style = StyleUtil() style.set_figure() scale_pjydyxl = pd.read_excel( f'{listdata_addr}各规模平均用电变化率表.xlsx').sort_values(by='平均用电变化率(%)', axis=0, ascending=False) scale_pjydyxl['平均用电变化率(%)'] = round(scale_pjydyxl['平均用电变化率(%)']) scale_pjydyxl['平均用电变化率(%)'] = scale_pjydyxl['平均用电变化率(%)'].map( lambda x: math.trunc(x)) # scale_pjydyxl = scale_pjydyxl.sort_values(by='平均用电影响率(%)', axis=0, ascending=False) x7 = scale_pjydyxl['规模'] y7 = scale_pjydyxl['平均用电变化率(%)'] for x, y in zip(x7, y7): y1 = str(y) + '%' plt.text(x, y, y1, ha='center', va='bottom', fontsize=10) plt.bar(x7, y7, 0.2, color="#4e79a7") plt.ylabel("平均用电变化率") # y轴添加百分号 def to_percent(temp, position): return '%1.0f' % temp + '%' plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent)) mu = ModelUtil() mu.save_pic(plt, '各规模养老机构用电变化率')
def img22_qx_cjydl_bhjd(self): """ # 图22 各地市平均用电能力指数排名 :return: """ style = StyleUtil() style.set_figure() ds_cjydbhl = pd.read_excel(f'{listdata_addr}湖北_各养老院床均用电变化率1.xlsx') ds_cjydbhl = ds_cjydbhl[ds_cjydbhl['床均用电变化率'] <= -90] cjydbhl_jd = ds_cjydbhl[['地市', '养老院名称']] cjydbhl_jd = cjydbhl_jd.groupby('地市').count() cjydbhl_jd = DataFrame(cjydbhl_jd) cjydbhl_jd = cjydbhl_jd.sort_values(by='养老院名称', axis=0, ascending=False) cjydbhl_jd.reset_index(inplace=True) cjydbhl_jd['养老院名称'] = cjydbhl_jd['养老院名称'].map(lambda x: math.trunc(x)) print(cjydbhl_jd) ax1 = plt.figure().gca() ax1.yaxis.set_major_locator(MaxNLocator(integer=True)) x2 = cjydbhl_jd['地市'] y2 = cjydbhl_jd['养老院名称'] plt.bar(x2, y2, 0.25, color="#4e79a7") plt.ylabel("养老机构数(个)") for x, y in zip(cjydbhl_jd['地市'], cjydbhl_jd['养老院名称']): plt.text(x, y, y, ha='center', va='bottom', fontsize=10) # plt.ylim(0,3) mu = ModelUtil() mu.save_pic(plt, '图22 床均用电量变化较大养老机构区县分布')
def img21_qxydnlzs(self): """ # 图21 各地市平均用电能力指数排名 :return: """ style = StyleUtil() style.set_figure() ds_pjydnlzs = pd.read_excel( f'{listdata_addr}各地市平均用电能力指数表.xlsx').sort_values(by='平均用电能力指数', axis=0, ascending=False) ds_pjydnlzs['均线'] = ds_pjydnlzs['平均用电能力指数'].mean() plt.figure() ax = plt.subplot() ax.plot(ds_pjydnlzs['地市'], ds_pjydnlzs['均线'], c='grey', dashes=[6, 2], label='均线') x2 = ds_pjydnlzs['地市'] y2 = ds_pjydnlzs['平均用电能力指数'] plt.bar(x2, y2, 0.4, color="#4e79a7") plt.ylabel("用电能力指数") ax.set_xticklabels(labels=style.wenziShu(x2)) mu = ModelUtil() mu.save_pic(plt, '图21 各区县用电能力指数排名')
def img19_qxydbhl(self): """ # 图19 各地市养老机构平均用电影响率 :return: """ style = StyleUtil() style.set_figure() ds_pjydyxl = pd.read_excel( f'{listdata_addr}各地市平均用电变化率表.xlsx').sort_values(by='平均用电变化率(%)', axis=0, ascending=False) ds_pjydyxl['均线'] = ds_pjydyxl['平均用电变化率(%)'].mean() plt.figure() ax = plt.subplot() x5 = ds_pjydyxl['地市'] y5 = ds_pjydyxl['平均用电变化率(%)'] plt.bar(x5, y5, 0.4, color="#4e79a7") plt.ylabel("平均用电变化率") ax.set_xticklabels(labels=style.wenziShu(x5)) # x_major_locator = MultipleLocator(1.2) # ax.xaxis.set_major_locator(x_major_locator) # y轴添加百分号 def to_percent(temp, position): return '%1.0f' % temp + '%' plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent)) mu = ModelUtil() mu.save_pic(plt, '图19 各区县养老机构用电变化率排名')
def img18_yljgydbhl(self): """ # 图18 湖北各地市养老机构用电变化率 :return: """ style = StyleUtil() style.set_figure() ds = [ '随州', '黄冈', '宜昌', '黄石', '恩施', '武汉', '咸宁', '荆门', '十堰', '孝感', '仙桃', '襄阳', '荆州', '鄂州', '天门', '潜江' ] # ds = ['黄石', '恩施', '武汉', '咸宁', '荆门', '仙桃', '襄阳', '荆州', '天门', '潜江'] color = [ 'black', 'aqua', 'blue', 'fuchsia', 'gray', 'green', 'lime', 'maroon', 'navy', 'olive', 'purple', 'red', 'silver', 'teal', 'pink', 'yellow' ] for i in range(len(ds)): ds_str = ds[i] color_str = color[i] rq_ydyxl = pd.read_excel( f'{ds_addr}{ds_str}每日用电变化率表.xlsx').sort_values(by='日期', axis=0) x4 = rq_ydyxl['日期'] y4 = rq_ydyxl['用电变化率(%)'] plt.plot(x4, y4, 'o-', color=color_str, linewidth=0.5, markersize=1.5, label=ds_str) plt.ylabel("用电变化率") plt.gca().xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d')) plt.xticks(pd.date_range('2020-1-1', '2020-4-30', freq='20d')) plt.legend(ncol=6, loc=(0, 1)) # plt.title(f'{ds}_养老机构用电变化率') # y轴添加百分号 def to_percent(temp, position): return '%1.0f' % temp + '%' plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent)) mu = ModelUtil() mu.save_pic(plt, f'图18 湖北各地市养老机构用电变化率_16')
def img18_yljgydbhl(self): """ # 图18 养老机构疫情疫情影响率 :return: """ style = StyleUtil() style.set_figure() rq_ydyxl = pd.read_excel(f'{listdata_addr}每日用电变化率表.xlsx').sort_values( by='日期', axis=0) x4 = rq_ydyxl['日期'] y4 = rq_ydyxl['用电变化率(%)'] plt.plot(x4, y4, 'o-', color="#4e79a7", linewidth=0.5, markersize=1.5) plt.ylabel("用电变化率") plt.gca().xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d')) plt.xticks(pd.date_range('2020-1-1', '2020-4-30', freq='20d')) # 添加文字和竖线 plt.text(x4[10], 14, '疫情前', fontsize=10, color='gray') plt.text(x4[50], 14, '疫情中', fontsize=10, color='gray') plt.text(x4[100], 14, '疫情后', fontsize=10, color='gray') plt.vlines(x4[23], -28, 15, colors='gray', linestyles='--', linewidth=0.5) plt.vlines(x4[97], -28, 15, colors='gray', linestyles='--', linewidth=0.5) # y轴添加百分号 def to_percent(temp, position): return '%1.0f' % temp + '%' plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent)) mu = ModelUtil() mu.save_pic(plt, f'图18 养老机构用电变化率')
def img20_yljgydnlzs(self): """ 图20 养老机构用电能力指数变化趋势 :return: """ style = StyleUtil() style.set_figure() rq_ydnlzs = pd.read_excel( f'{listdata_addr}湖北每日用电能力指数表.xlsx').sort_values(by='日期', axis=0) x1 = rq_ydnlzs['日期'] y1 = rq_ydnlzs['用电能力指数'] plt.plot(x1, y1, 'o-', color="#4e79a7", linewidth=0.5, markersize=1.8) plt.ylim(0, 1.2) # y轴限制 plt.ylabel("用电能力指数") plt.gca().xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d')) plt.xticks(pd.date_range('2020-1-1', '2020-4-30', freq='20d')) # 添加文字和竖线 plt.text(x1[10], 1.1, '疫情前', fontsize=12) plt.text(x1[50], 1.1, '疫情中', fontsize=12) plt.text(x1[100], 1.1, '疫情后', fontsize=12) plt.vlines(x1[23], 0.0, 1.2, colors='gray', linestyles='--', linewidth=0.5) plt.vlines(x1[97], 0.0, 1.2, colors='gray', linestyles='--', linewidth=0.5) mu = ModelUtil() mu.save_pic(plt, '图20 养老机构用电能力指数变化趋势')
def img25_qxydnlzsbhqk(self): """ # 图25 各地市用电能力指数整体变化情况 :return: #96FED1 #2828FF """ style = StyleUtil() style.set_figure(frame=True) ds_rq_ydnlzs_ztbhl = pd.read_excel( f'{listdata_addr}各地市整体用电能力指数变化表.xlsx') ds_rq_ydnlzs_ztbhl.rename(columns={'整体变化率': '变化率'}, inplace=True) ds_rq_ydnlzs_ztbhl = ds_rq_ydnlzs_ztbhl.sort_values(by='疫情前平均用电能力指数', axis=0, ascending=False) plt.figure() ax1 = plt.subplot() x3 = ds_rq_ydnlzs_ztbhl['地市'] y3_1 = ds_rq_ydnlzs_ztbhl['疫情前平均用电能力指数'] y3_2 = ds_rq_ydnlzs_ztbhl['疫情后平均用电能力指数'] n = np.arange(x3.shape[0]) # bar_width = 0.25 bar_width = 0.3 plt.bar(n, y3_1, bar_width, align="center", color="#4e79a7", label='疫情前') plt.bar(n + bar_width, y3_2, bar_width, color=(0.3, 0.7, 0.7, 0.91), align="center", label='疫情后') print(n + bar_width / 2) plt.xticks(n + bar_width / 2, x3) ax2 = ax1.twinx() ax2.plot(x3, ds_rq_ydnlzs_ztbhl['变化率'], color="#FBDA80", label="变化率", linewidth=1.5) def to_percent(temp, position): return '%1.0f' % temp + '%' plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent)) # 设置X轴ticks文字竖着显示 ax1.set_xticklabels(labels=style.wenziShu(x3)) # ax2.set_xticklabels(labels=style.wenziShu(x3)) # 取消边框 ax1.spines["top"].set_visible(False) ax2.spines["top"].set_visible(False) # Y轴标签 ax1.set_ylabel('用电能力指数') ax2.set_ylabel('变化率') # 开启图例 leg1 = ax1.legend(handleheight=0.05, ncol=2, columnspacing=0.4, loc=(0.38, 1)) leg2 = ax2.legend(handleheight=0.45, columnspacing=0.4, loc=(0.7, 1)) # 取消图例的边框 leg1.get_frame().set_linewidth(0.0) leg2.get_frame().set_linewidth(0.0) # 自动调整布局 plt.tight_layout() mu = ModelUtil() mu.save_pic(plt, '图25 各区县养老机构用电能力指数变化情况')