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,分别表示网格线的颜色,样式和宽度。
  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
openpyxl是一个用于操作Excel文件的Python库,它提供了丰富的功能来读取、写入和修改Excel文件。然而,openpyxl并不直接支持绘制三维表,因为它主要专注于Excel文件的数据处理和操作。 要在Excel中创建三维表,你可以使用openpyxl库来编写数据到Excel文件中,然后使用Excel自身的功能来创建表。下面是一个简单的示例代码,演示了如何使用openpyxl创建一个包含三维表的Excel文件: ```python from openpyxl import Workbook from openpyxl.chart import BarChart3D # 创建一个新的工作簿 workbook = Workbook() sheet = workbook.active # 写入数据到工作表 data = [ ['Category', 'Value'], ['A', 10], ['B', 15], ['C', 7], ['D', 12] ] for row in data: sheet.append(row) # 创建一个三维柱状图 chart = BarChart3D() chart.title = "Three-dimensional Bar Chart" chart.data = sheet['A1:B5'] chart.x_axis_title = "Category" chart.y_axis_title = "Value" # 将表插入到工作表中 sheet.add_chart(chart, "D1") # 保存工作簿 workbook.save("3d_chart.xlsx") ``` 在这个示例中,我们首先创建了一个新的工作簿,并获取了默认的工作表。然后,我们将数据写入工作表中,并创建了一个三维柱状图。最后,我们将表插入到工作表中,并保存工作簿为一个Excel文件。 请注意,这只是一个简单的示例,你可以根据自己的需求进行更复杂的操作和定制。另外,openpyxl还提供了其他类型的表,如折线图、散点等,你可以根据需要选择适合的表类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青枫浦上看桃花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值