python matplotlib 双y轴图像实现(1)

最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~

给大家准备的学习资料包括但不限于:

Python 环境、pycharm编辑器/永久激活/翻译插件

python 零基础视频教程

Python 界面开发实战教程

Python 爬虫实战教程

Python 数据分析实战教程

python 游戏开发实战教程

Python 电子书100本

Python 学习路线规划

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


大家好,我是侯小啾!在这里插入图片描述

在这里插入图片描述本期blog分享的内容是,使用python matplotlib 绘制出双y轴图像 的具体实现。


绘制双y轴的思想,也是用到了matplotlib面向对象绘图的思想。在不指定位置的情况下,在一个画布上创建出两个坐标系,其中第一个坐标系正常创建,第二个坐标系则使用专有的twinx()方法创建。

则两个坐标系的位置重合。第一个坐标系轴在左,通过twinx()方法创建出的坐标系则轴在右。因为有了两个y轴,所以再对y轴属性进行操作的时候,则需要面向对象,如果再简单地使用plt.ylabel()等方法,则只能操作到左轴,而影响不到右轴。

下边做一个示例,首先是导包和准备数据,这里准备一组销量数据,并计算其增长率,将其体现在右轴。

具体代码如下:

import matplotlib.pyplot as plt

生成一组数据

x = range(7)

y1 = [2000, 1600, 3000, 6200, 7000, 9800, 11000]

y2 = [1]

for i in range(len(y1)):

if i+1 == len(y1):

break

rate = round(y1[i+1]/y1[i] - 1, 2)

y2.append(rate)

fig = plt.figure(figsize=(10, 8), facecolor=‘#ff33ff’)

字体使用楷体

plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]

plt.rcParams[‘axes.unicode_minus’] = False

背景色为cc00ff

plt.rcParams[‘axes.facecolor’] = ‘#cc00ff’

ax1 = fig.add_subplot(111)

plt.title(‘销售量及其增长率图示’, color=‘#ffff00’, fontsize=25, y=1.04)

plt.xticks(x, [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’, ‘7月’], color=‘#ffff00’, fontsize=15)

plt.xlabel(‘月份’, color=‘#ff0033’, fontsize=15)

plt.yticks(color=‘#B22222’, fontsize=15)

ax1.bar(x, y1, color=‘#33ff66’, label=‘left’)

ax1.set_ylabel(‘销售量(件)’, color=‘#66ff00’, fontsize=20)

增加一条坐标轴

ax2 = ax1.twinx()

ax2.plot(x, y2, color=‘#3399ff’, linestyle=‘–’, marker=‘o’, linewidth=2)

ax2.set_ylabel(“增长率”, color=‘#66ff00’, fontsize=20)

ax2.tick_params(axis=‘y’, color=‘green’, labelsize=15, labelcolor=‘#B22222’)

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解决这个问题。你可以使用 matplotlib 的 `twinx()` 和 `twiny()` 方法来创建第二个 x 轴和 y 轴,并使用 `plot()` 方法画出多条曲线。 下面是一个例子: ```python import matplotlib.pyplot as plt import numpy as np # 生成数据 x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) y3 = np.tan(x) # 创建图像对象和第一个坐标轴 fig, ax1 = plt.subplots() # 画第一条曲线 ax1.plot(x, y1, color='r', label='sin') # 设置第一个坐标轴的标签和颜色 ax1.set_xlabel('x') ax1.set_ylabel('sin(x)', color='r') ax1.tick_params(axis='y', labelcolor='r') # 创建第二个坐标轴 ax2 = ax1.twinx() # 画第二条曲线 ax2.plot(x, y2, color='g', label='cos') # 设置第二个坐标轴的标签和颜色 ax2.set_ylabel('cos(x)', color='g') ax2.tick_params(axis='y', labelcolor='g') # 创建第三个坐标轴 ax3 = ax1.twiny() # 画第三条曲线 ax3.plot(x, y3, color='b', label='tan') # 设置第三个坐标轴的标签和颜色 ax3.set_xlabel('tan(x)', color='b') ax3.tick_params(axis='x', labelcolor='b') # 添加图例 lines, labels = ax1.get_legend_handles_labels() lines2, labels2 = ax2.get_legend_handles_labels() lines3, labels3 = ax3.get_legend_handles_labels() ax3.legend(lines + lines2 + lines3, labels + labels2 + labels3, loc='best') # 显示图像 plt.show() ``` 在这个例子中,我们创建了一个图像对象 `fig` 和一个坐标轴对象 `ax1`,然后使用 `plot()` 方法画出第一条曲线。接着,我们使用 `twinx()` 方法创建了第二个 y 轴,并使用 `plot()` 方法画出第二条曲线。最后,我们使用 `twiny()` 方法创建了第二个 x 轴,并使用 `plot()` 方法画出第三条曲线。 注意,我们需要分别设置每个坐标轴的标签和颜色,并使用 `tick_params()` 方法设置每个坐标轴的刻度标签颜色。同时,我们需要使用 `get_legend_handles_labels()` 方法获取每个坐标轴的图例,并使用 `legend()` 方法将它们合并在一起。 希望这个例子能够帮助你画出多条曲线的双 x 轴双 y 轴图像

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值