python读取excel数据并用双y轴绘制柱状图和折线图,柱子用渐变颜色填充

这篇具有很好参考价值的文章主要介绍了python读取excel数据并用双y轴绘制柱状图和折线图,柱子用渐变颜色填充。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python绘图系列文章目录

往期python绘图合集:
python绘制简单的折线图
python读取excel中数据并绘制多子图多组图在一张画布上
python绘制带误差棒的柱状图
python绘制多子图并单独显示
python读取excel数据并绘制多y轴图像
python绘制柱状图并美化|不同颜色填充柱子
python随机生成数据并用双y轴绘制两条带误差棒的折线图
Python绘制带误差棒的柱状图渐变色填充含数据标注(进阶)
python绘制散点图|散点大小和颜色深浅由数值决定
Matplotlib绘制漂亮的饼状图|python绘制漂亮的饼状图


一、 数据准备

通过 Pandas 的 read_excel() 函数读取了 Excel 文件,将其转为了数据框格式,并设置字体字号,画布大小。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib

excel = pd.read_excel("C:/Users/ypzhao/Desktop/新能源汽车数据.xlsx")
data = pd.DataFrame(excel)
# 生成随机数据
x = data['年份']
y1 = data['销量']
y2 = data['增长率']
# 设置字体和字号
matplotlib.rcParams['font.family'] = 'Times New Roman'
matplotlib.rcParams['font.size'] = 24

font = {'family':'Times New Roman','size':28}
# 创建画布和子图
fig, ax1 = plt.subplots(figsize=(11,6),dpi=3000)

python读取excel数据并用双y轴绘制柱状图和折线图,柱子用渐变颜色填充

二、增加y轴

使用 ax1.bar() 函数绘制柱状图,ax2.plot() 函数绘制折线图,设置坐标轴标签和标题,并设置坐标轴字体和字号。

# 设置字体和字号
matplotlib.rcParams['font.family'] = 'Times New Roman'
matplotlib.rcParams['font.size'] = 24

font = {'family':'Times New Roman','size':28}
# 创建画布和子图
fig, ax1 = plt.subplots(figsize=(11,6),dpi=3000)
ax2 = ax1.twinx()

三、准备颜色渐变

3.1 准备颜色渐变

n_groups = 6
cmap = plt.get_cmap('coolwarm')
colors_1 = [cmap(i) for i in np.linspace(0, 0.8, n_groups)]

# 绘制图
#绘制折线图
bar_plot=ax1.bar(x, y1, color=colors_1)
#绘制柱状图
ax2.plot(x, y2, color='green',marker='*',markersize=10)

3.2 美化图

# 设置坐标轴标签和标题
ax1.set_xlabel('年份',fontname='SimSun')
ax2.set_ylabel('增长率/%', color='#3F7F4C',fontname='SimSun')
ax1.set_ylabel('销量/万辆', color='#6D8F18',fontname='SimSun')

# 设置坐标轴字体和字号
for ax in [ax1, ax2]:
    ax.tick_params(axis='both', which='major', labelsize=20)
    for tick in ax.get_xticklabels() + ax.get_yticklabels():
        tick.set_fontname('Times New Roman')
        # 设置坐标轴标签和标题
ax1.set_xlabel('年份',fontname='SimSun')
ax2.set_ylabel('增长率/%', color='#3F7F4C',fontname='SimSun')
ax1.set_ylabel('销量/万辆', color='#6D8F18',fontname='SimSun')

# 设置坐标轴字体和字号
for ax in [ax1, ax2]:
    ax.tick_params(axis='both', which='major', labelsize=20)
    for tick in ax.get_xticklabels() + ax.get_yticklabels():
        tick.set_fontname('Times New Roman')
# 设置网格线不可见
ax1.grid(visible=False)
ax2.grid(visible=False)
ax2.set_ylim(-45,390)
ax1.set_ylim(0,730)

# 设置双坐标轴的颜色不一致
ax1.spines['left'].set_color('#6D8F18')
ax1.spines['right'].set_color('#3F7F4C')
ax1.tick_params(axis='y', colors='#6D8F18')
ax2.tick_params(axis='y', colors='#3F7F4C')
ax1.grid(visible=False)
ax2.grid(visible=False)
ax2.set_ylim(-45,390)
ax1.set_ylim(0,730)

# 设置双坐标轴的颜色不一致
ax1.spines['left'].set_color('#6D8F18')
ax1.spines['right'].set_color('#3F7F4C')
ax1.tick_params(axis='y', colors='#6D8F18')
ax2.tick_params(axis='y', colors='#3F7F4C')

3.3给折线图增添数据

for i, j in zip(x, y2):
    ax.annotate('{:.2f}'.format(j), xy=(i, j), xytext=(-10, 10),
                textcoords='offset points', fontsize=16)

3.4 调柱状图增加数据

for rect in bar_plot:
    height = rect.get_height()
    ax1.text(rect.get_x() + rect.get_width()/2., height+1, '%.1f' % (height),
            ha='center', va='bottom', fontsize=16, color='blue',fontname='Times New Roman')  # 字体颜色蓝色
# 自动调整布局
plt.tight_layout()

使用 rect.get_x() + rect.get_width()/2. 表示标签文本的位置,在柱形中心正上方;使用 rect.get_height()+0.5 表示标签文本的高度,在柱形顶端上方略微偏移;ha 和 va 参数分别用于设置文本标签的水平和垂直对齐方式。最后,f’{y[i]}’ 表示标签文本内容,即柱形高度。

四、完成代码

# -*- coding: utf-8 -*-
"""
Created on Sat May 20 17:55:37 2023

@author: ypzhao
"""

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib

excel = pd.read_excel("C:/Users/ypzhao/Desktop/新能源汽车数据.xlsx")
data = pd.DataFrame(excel)

# 生成随机数据
x = data['年份']
y1 = data['销量']
y2 = data['增长率']

# 设置字体和字号
matplotlib.rcParams['font.family'] = 'Times New Roman'
matplotlib.rcParams['font.size'] = 24

font = {'family':'Times New Roman','size':28}
# 创建画布和子图
fig, ax1 = plt.subplots(figsize=(11,6),dpi=3000)
ax2 = ax1.twinx()



# 准备颜色渐变
n_groups = 6
cmap = plt.get_cmap('coolwarm')
colors_1 = [cmap(i) for i in np.linspace(0, 0.8, n_groups)]

# 绘制图
bar_plot=ax1.bar(x, y1, color=colors_1)
# 调整字体颜色、柱子宽度等其他参数

ax2.plot(x, y2, color='green',marker='*',markersize=10)


# 设置坐标轴标签和标题
ax1.set_xlabel('年份',fontname='SimSun')
ax2.set_ylabel('增长率/%', color='#3F7F4C',fontname='SimSun')
ax1.set_ylabel('销量/万辆', color='#6D8F18',fontname='SimSun')


# 设置坐标轴字体和字号
for ax in [ax1, ax2]:
    ax.tick_params(axis='both', which='major', labelsize=20)
    for tick in ax.get_xticklabels() + ax.get_yticklabels():
        tick.set_fontname('Times New Roman')

# 设置网格线不可见
ax1.grid(visible=False)
ax2.grid(visible=False)
ax2.set_ylim(-45,390)
ax1.set_ylim(0,730)

# 设置双坐标轴的颜色不一致
ax1.spines['left'].set_color('#6D8F18')
ax1.spines['right'].set_color('#3F7F4C')
ax1.tick_params(axis='y', colors='#6D8F18')
ax2.tick_params(axis='y', colors='#3F7F4C')

# 给折线图增添数据
for i, j in zip(x, y2):
    ax.annotate('{:.2f}'.format(j), xy=(i, j), xytext=(-10, 10),
                textcoords='offset points', fontsize=16)
    

# 调柱状图增加数据
for rect in bar_plot:
    height = rect.get_height()
    ax1.text(rect.get_x() + rect.get_width()/2., height+1, '%.1f' % (height),
            ha='center', va='bottom', fontsize=16, color='blue',fontname='Times New Roman')  # 字体颜色蓝色
# 自动调整布局
plt.tight_layout()

plt.savefig("sells.jpg",dpi=3000)

六 运行结果

python读取excel数据并用双y轴绘制柱状图和折线图,柱子用渐变颜色填充
本文涉及数据链接及代码(点击获取数据):文章来源地址https://www.toymoban.com/news/detail-495985.html

到了这里,关于python读取excel数据并用双y轴绘制柱状图和折线图,柱子用渐变颜色填充的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • R语言学习——散点图和折线图

    BMI.txt name height weight gender BMI tom 180 75 male 23.1481481481481 cindy 165 58 female 21.3039485766759 jimmy 175 72 male 23.5102040816327 sam 173 68 male 22.7204383708109 lucy 160 60 female 23.4375 lily 165 55 female 20.2020202020202

    2024年02月12日
    浏览(29)
  • 【Python】查询SQL并用柱状图展示

    需求: 查询2022年各月订单量,并用柱状图展示 SQL: Python代码: 结果展示:  

    2024年02月13日
    浏览(28)
  • python读取Excel绘制饼图的两种方式

    matplotlib 简单方便,适合数据作图或科学作图(论文发表) pyecharts 流程略复杂,但功能强大,图形具有交互式,适合项目开发或商业分析报告,但是 它是一个非常新的库,开发不稳定 本文介绍用 pandas库 读取Excel (csv)数据,分别用 matplotlib库 和 pyecharts库 绘制饼图。 注: 实

    2024年02月11日
    浏览(30)
  • Excel双向柱状图的绘制

    Excel双向柱状图在绘制增减比较的时候经常用到,叫法繁多,双向柱状图、上下柱状图、增减柱状图都有。 这里主要介绍一下Excel的基础绘制方法和复杂一点的双向柱状图的绘制 首先升降的数据如下: 月份 上升 下降 202203 59 -43 202204 56 -21 首先选择数据后插入–柱状图,选择

    2024年02月15日
    浏览(32)
  • 【Python】pyecharts 模块 ⑥ ( 绘制柱状图 | pyecharts 绘制柱状图步骤 | 柱状图 x 轴 / y 轴 翻转 | 柱状图数据标签位置设置 )

    pyecharts 画廊网站 : https://gallery.pyecharts.org/#/ 在该网站可查看官方示例 首先 , 导入 柱状图 Bar 类 , 该类定义在 pyecharts.charts 模块中 ; 然后 , 创建 柱状图 Bar 类型 实例对象 , 该对象代表了一个柱状图 ; 再后 , 设置该 柱状图的 x 轴 和 y 轴数据 , 调用 Bar#add_xaxis() 函数 , 设置 x 轴数

    2024年02月13日
    浏览(28)
  • 探索数据之美:初步学习 Python 柱状图绘制

    pyecharts 是一个基于 Echarts 的 Python 图表库,它提供了丰富的图表类型和交互功能。可以使用使用 pyecharts 创建柱状图 首先,安装 pyecharts 库。如果没有安装,可以使用以下命令安装: 然后,创建一个简单的柱状图: 在这个示例中,首先导入 pyecharts 的必要模块。然后,创建一

    2024年02月12日
    浏览(26)
  • python如何绘制柱状图

    安装两种插件 柱状图绘制步骤 导入 matplotlib.pyplot 模块 准备数据,可以使用 numpy/pandas 整理数据 调用 pyplot.bar() 绘制柱状图 上代码 效果图 函数解析 plt.bar() 用于画柱状图,还可以使用 plt.plot() 绘制折线图 plt.xlabel() plt.ylabel() 用于标注x轴、y轴 plt.title() 用于给图片添加标题

    2024年02月11日
    浏览(30)
  • Python绘制柱状图堆叠图

    本文详细介绍如何使用 Matplotlib 绘制柱状堆叠图 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 开始绘制柱状堆叠图之前,我们需要生成实验数据。在本案例中,我们可以使用 NumPy 库生成两个数组 y1 和 y2 来分别表示产品 A 和 B 在五个不同城

    2024年02月07日
    浏览(30)
  • 保姆级教程:python读取并绘制nc数据

    2.利用basemap绘图    3、利用cartopy绘图 利用cartopy绘图的详细内容,可以参考此链接: http://t.csdnimg.cn/GjYUb

    2024年02月05日
    浏览(28)
  • python绘制柱状图,并添加标签

    利用下面的代码,绘制柱状图。 难点:绘制标签 bar.get_height() 用于获取柱子的高度,也就是柱状图中每个柱子的高度值。在上面的代码中,我们使用这个高度值来确定要在柱子上方添加的数据标签的位置。 具体来说,这行代码: 将 height 设置为当前柱子的高度。然后,在

    2024年01月18日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包