python实现并列垂直柱状图与折线图的组合图 |
您所在的位置:网站首页 › cad如何画破折线 › python实现并列垂直柱状图与折线图的组合图 |
目录 一、数据源 二、实现的代码 三、结果展示 四、拓展知识 1.绘图标记 1.2线类型: 1.3颜色类型: 标记大小与颜色 1.4线的类型 1.5线的颜色 1.6标题与标签的定位 1.7Matplotlib 网格线 一、数据源 二、实现的代码 #导入库 import pandas as pd import matplotlib.pyplot as plt #自定义函数 def plot_combination(): sale = pd.read_excel('./人均教育支出.xlsx', header=0, index_col=0) # 设置正常显示中文标签 plt.rcParams['font.sans-serif'] = ['SimHei'] # 正常显示负号 plt.rcParams['axes.unicode_minus'] = False # 设置字体大小 plt.rcParams.update({'font.size': 16}) # 提取数据 x = sale['年份'] y1 = sale['城镇'] y2 = sale['农村'] y3= sale['占比'] plt.figure(figsize=(16, 8)) plt.subplot(111) # 柱形宽度 bar_width = 0.35 # 在主坐标轴绘制柱形图 plt.bar(x, y1, bar_width,color='r', label='城镇') plt.bar(x + bar_width, y2, bar_width,color='#FFFF00', label='农村') # 设置坐标轴的取值范围,避免柱子过高而与图例重叠 plt.ylim(0, max(y1.max(), y2.max()) * 1.2) # 设置图例 plt.legend(loc='upper left') plt.ylabel("单位:元",fontsize=20, loc="center") # 设置横坐标的标签 plt.xticks(x) #plt.set_xticklabels(sale.index) plt.xlabel("年份",fontsize=20, loc="center") # 在次坐标轴上绘制折线图 plt.twinx() # ls:线的类型,lw:宽度 plt.plot(x, y3, ls='--', lw=2, color='c', marker='d',ms = 20, mfc = 'm', label='农村与城镇的消费占比') # 设置次坐标轴的取值范围,避免折线图波动过大,这里默认显示 plt.ylim() # 设置图例 plt.legend(loc='upper center') # 定义显示百分号的函数 def to_percent(number, position=0): return '%.f' % (number*100) + '%' # 次坐标轴的标签显示百分号 FuncFormatter:自定义格式函数包 from matplotlib.ticker import FuncFormatter plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent)) # 设置标题 plt.title('\n人均教育支出占比\n', fontsize=26, loc='center', color='k') plt.ylabel("单位:%",fontsize=20, loc="center") #保存图片 plt.savefig('./figure.jpg', bbox_inches='tight') plt.show() if __name__ == '__main__': plot_combination() 三、结果展示 四、拓展知识 1.绘图标记marker 可以定义的符号如下: 标记符号描述"." 点"," 像素点"o" 实心圆"v" 下三角"^" 上三角"" 右三角"1" 下三叉"2" 上三叉"3" 左三叉"4" 右三叉"8" 八角形"s" 正方形"p" 五边形"P" 加号(填充)"*" 星号"h" 六边形 1"H" 六边形 2"+" 加号"x" 乘号 x"X" 乘号 x (填充)"D" 菱形"d" 瘦菱形"|" 竖线"_" 横线0 (TICKLEFT) 左横线1 (TICKRIGHT) 右横线2 (TICKUP) 上竖线3 (TICKDOWN) 下竖线4 (CARETLEFT) 左箭头5 (CARETRIGHT) 右箭头6 (CARETUP) 上箭头7 (CARETDOWN) 下箭头8 (CARETLEFTBASE) 左箭头 (中间点为基准)9 (CARETRIGHTBASE) 右箭头 (中间点为基准)10 (CARETUPBASE) 上箭头 (中间点为基准)11 (CARETDOWNBASE) 下箭头 (中间点为基准)"None", " " or ""没有任何标记'$...$' 渲染指定的字符。例如 "$f$" 以字母 f 为标记。 1.2线类型: 线类型标记描述'-'实线':'虚线'--'破折线'-.'点划线 1.3颜色类型: 颜色标记描述'r'红色'g'绿色'b'蓝色'c'青色'm'品红'y'黄色'k'黑色'w'白色 标记大小与颜色我们可以自定义标记的大小与颜色,使用的参数分别是: markersize,简写为 ms:定义标记的大小。markerfacecolor,简写为 mfc:定义标记内部的颜色。markeredgecolor,简写为 mec:定义标记边框的颜色。 1.4线的类型线的类型可以使用 linestyle 参数来定义,简写为 ls。 类型简写说明'solid' (默认)'-'实线'dotted'':'点虚线'dashed''--'破折线'dashdot''-.'点划线'None''' 或 ' '不画线 1.5线的颜色线的颜色可以使用 color 参数来定义,简写为 c。 颜色类型: 颜色标记描述'r'红色'g'绿色'b'蓝色'c'青色'm'品红'y'黄色'k'黑色'w'白色当然也可以自定义颜色类型,例如:SeaGreen、#8FBC8F 等,完整样式可以参考 HTML 颜色值。 1.6标题与标签的定位title() 方法提供了 loc 参数来设置标题显示的位置,可以设置为: 'left', 'right', 和 'center', 默认值为 'center'。 xlabel() 方法提供了 loc 参数来设置 x 轴显示的位置,可以设置为: 'left', 'right', 和 'center', 默认值为 'center'。 ylabel() 方法提供了 loc 参数来设置 y 轴显示的位置,可以设置为: 'bottom', 'top', 和 'center', 默认值为 'center'。 1.7Matplotlib 网格线我们可以使用 pyplot 中的 grid() 方法来设置图表中的网格线。 grid() 方法语法格式如下: matplotlib.pyplot.grid(b=None, which='major', axis='both', )参数说明: b:可选,默认为 None,可以设置布尔值,true 为显示网格线,false 为不显示,如果设置 **kwargs 参数,则值为 true。which:可选,可选值有 'major'、'minor' 和 'both',默认为 'major',表示应用更改的网格线。axis:可选,设置显示哪个方向的网格线,可以是取 'both'(默认),'x' 或 'y',分别表示两个方向,x 轴方向或 y 轴方向。**kwargs:可选,设置网格样式,可以是 color='r', linestyle='-' 和 linewidth=2,分别表示网格线的颜色,样式和宽度。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |