Python微信订餐小程序课程视频

https://blog.csdn.net/m0_56069948/article/details/122285951

Python实战量化交易理财系统

https://blog.csdn.net/m0_56069948/article/details/122285941
诈尸人口回归。这一年忙着灌水忙到头都掉了,最近在女朋友的提醒下终于想起来博客的账号密码,正好今天灌水的时候需要画一个双X轴双Y轴的图,研究了两小时终于用Py实现了。找资料的过程中没有发现有系统的文章,反正代码都整理出来了,我决定顺势水一篇。

目前找到的plt实现双X轴双Y轴绘图方式有两种:

  1. 使用fig.add_subplot方式将两对坐标系叠加在一个fig上实现双X轴双Y轴效果。所有调整均可完美实现,推荐该方式
  2. 通过axes.twinx().twiny()方式实现双X轴双Y轴图形绘制。问题在于对于第二个Y轴的各种设置无效,label可以通过手动添加的方式创建并指定颜色,而tick颜色则无法修改。可能需要等待官方修复,或者尝试先使用 ax1=axes.twinx()方式,从ax1中获取第二个Y轴,然后再使用ax2.twiny()创建第二个X轴。

fig.add_subplot 方式实现双X轴双Y轴绘图

|  | """ |
|  | 使用plt,通过fig.add\_subplot方式将两对坐标系叠加在一个fig上实现双X轴双Y轴效果。 |
|  | 所有调整均可完美实现,推荐该方式 |
|  | """ |
|  | import matplotlib.pyplot as plt |
|  | import numpy as np |
|  |  |
|  | """生成数据并设置绘图参数""" |
|  | x = np.arange(1, 12, 4) |
|  | y = np.arange(1, 4, 1) |
|  | x2=x*10 |
|  | y2=y**2 |
|  | # 设置两种绘图颜色 |
|  | c1='r' |
|  | c2='b' |
|  | # 设置字体大小 |
|  | fontsize=12 |
|  | # 设置画布大小 |
|  | width,height=16,14 # 单位为cm;因为保存图片时使用 bbox\_inches = 'tight' 可能使图片尺寸略微放大,所以此处宽度设置得略小 |
|  | # 设置刻度线在坐标轴内 |
|  | plt.rcParams['xtick.direction'] = 'in' |
|  | plt.rcParams['ytick.direction'] = 'in' |
|  | """绘图""" |
|  | lns=[] # 用于存储绘图句柄以合并图例的list |
|  | # 创建画布并设置大小 |
|  | fig=plt.figure() |
|  | fig.set\_size\_inches(width/2.54, height/2.54) # 因为画布输入大小为厘米,此处需转换为英寸,所以除以2.54 |
|  | # 通过 add\_subplot 方式创建两个坐标轴,相当于在同一个子图上叠加了两对坐标系 |
|  | ax=fig.add\_subplot(111, label="1") |
|  | ax2=fig.add\_subplot(111, label="2", frame\_on=False) |
|  | # 绘制图1并将绘图句柄返回,以便添加合并图例 |
|  | lns1=ax.plot(x,y,color=c1,label=c1) |
|  | lns=lns1 |
|  | lns2=ax2.plot(x2,y2, color=c2,label=c2) |
|  | lns+=lns2 |
|  | """图形美化""" |
|  | # 调整第二对坐标轴的label和tick位置,以实现双X轴双Y轴效果 |
|  | ax2.xaxis.tick\_top() |
|  | ax2.yaxis.tick\_right() |
|  | ax2.xaxis.set\_label\_position('top') |
|  | ax2.yaxis.set\_label\_position('right') |
|  | # 设置坐标轴标注 |
|  | ax.set\_xlabel("X1", color=c1,fontsize=fontsize) |
|  | ax.set\_ylabel("Y1", color=c1,fontsize=fontsize) |
|  | ax2.set\_xlabel('X2', color=c2,fontsize=fontsize) |
|  | ax2.set\_ylabel('Y2', color=c2,fontsize=fontsize) |
|  | # 设置图表标题 |
|  | fig.suptitle("Title",fontsize=fontsize+2) |
|  | # 设置坐标轴刻度颜色 |
|  | ax.tick\_params(axis='x', colors=c1) |
|  | ax.tick\_params(axis='y', colors=c1) |
|  | ax2.tick\_params(axis='x', colors=c2) |
|  | ax2.tick\_params(axis='y', colors=c2) |
|  | # 设置坐标轴线颜色 |
|  | ax.spines["left"].set\_color("r") # 修改左侧颜色 |
|  | ax.spines["right"].set\_color("b") # 修改右侧颜色 |
|  | ax.spines["top"].set\_color("b") # 修改上边颜色 |
|  | ax.spines["bottom"].set\_color("r") # 修改下边颜色 |
|  | # 添加图例 |
|  | labs = [l.get\_label() for l in lns] |
|  | ax.legend(lns, labs, loc=0,fontsize=fontsize) |
|  | plt.tight\_layout() |
|  | plt.show() |

使用 axes.twinx().twiny() 方式实现双X轴双Y轴绘图

|  | """ |
|  | 使用plt,通过 axes.twinx().twiny() 方式实现双X轴双Y轴图形绘制。 |
|  | 问题在于对于第二个Y轴的各种设置无效,label可以通过手动添加的方式创建并指定颜色,而tick颜色则无法修改 |
|  | """ |
|  | import matplotlib.pyplot as plt |
|  | import numpy as np |
|  |  |
|  | """生成数据并设置绘图参数""" |
|  | x = np.arange(1, 12, 4) |
|  | y = np.arange(1, 4, 1) |
|  | x2=x*10 |
|  | y2=y**2 |
|  | # 设置两种绘图颜色 |
|  | c1='r' |
|  | c2='b' |
|  | # 设置字体大小 |
|  | fontsize=12 |
|  | # 设置刻度线在坐标轴内 |
|  | plt.rcParams['xtick.direction'] = 'in' |
|  | plt.rcParams['ytick.direction'] = 'in' |
|  | """绘图""" |
|  | lns=[] # 用于存储绘图句柄以合并图例的list |
|  | # 创建画布 |
|  | fig,axes=plt.subplots() |
|  | fig.set\_size\_inches(10, 8) |
|  | # 绘制图1并将绘图句柄返回,以便添加合并图例 |
|  | lns1=axes.plot(x,y,color=c1,label=c1) |
|  | lns=lns1 |
|  | # 创建双x轴双y轴 |
|  | twin\_axes=axes.twinx().twiny() # 使用画布的初始坐标轴对象创建第二对坐标轴,类似于在双x轴的基础上叠加双y轴 |
|  | # 绘制图2并将绘图句柄返回,以便添加合并图例 |
|  | lns2=twin\_axes.plot(x2,y2,color=c2,label=c2)  |
|  | lns+=lns2 |
|  | """图形美化""" |
|  | # 设置坐标轴标注 |
|  | axes.set\_xlabel("X1",color=c1, fontsize=fontsize) |
|  | axes.set\_ylabel("Y1",color=c1, fontsize=fontsize) |
|  | twin\_axes.set\_xlabel("X2",color=c2, fontsize=fontsize) |
|  | twin\_axes.set\_ylabel("Y2",color=c2, fontsize=fontsize) # 第二个y轴设置标注无效 |
|  | # 设置图表标题 |
|  | fig.suptitle("Title",fontsize=fontsize+2) |
|  | # 设置第二个y轴的label;由于set\_ylabel无效,因此只能通过该种方式手动添加 |
|  | loc\_text\_x=np.min(plt.xlim())+np.ptp(plt.xlim())*1.03 |
|  | loc\_text\_y=np.min(plt.ylim())+np.ptp(plt.ylim())*0.5 |
|  | str\_text='Y2' |
|  | twin\_axes.text(loc\_text\_x, loc\_text\_y, str\_text,rotation=90,color=c2,fontsize=fontsize) |
|  | # 设置坐标轴刻度颜色 |
|  | axes.tick\_params('x', colors=c1) |
|  | axes.tick\_params('y', colors=c1) |
|  | twin\_axes.tick\_params('x', colors=c2) |
|  | twin\_axes.tick\_params('y', colors=c2) |
|  | # 设置坐标轴线颜色 |
|  | twin\_axes.spines["left"].set\_color("r") # 修改左侧颜色 |
|  | twin\_axes.spines["right"].set\_color("b") # 修改右侧颜色;同第二个y轴的label设置一样,该设置也不起作用 |
|  | twin\_axes.spines["top"].set\_color("b") # 修改上边颜色 |
|  | twin\_axes.spines["bottom"].set\_color("r") # 修改下边颜色 |
|  | # 添加图例 |
|  | # lns = lns1+lns2 |
|  | labs = [l.get\_label() for l in lns] |
|  | axes.legend(lns, labs, loc=0,fontsize=fontsize) |
|  | plt.tight\_layout() |
|  | plt.show() |

output

本文参考:

  1. matplotlib using twinx and twiny together (like twinxy)
  2. twinx and twiny in Matplotlib
  3. matplotlib 双y轴绘制及合并图例
  4. Python matplotlib怎么画双X轴和双Y轴

Python实现双X轴双Y轴绘图相关推荐

  1. 【python】matplotlib 实现双(多)Y轴图

    [python]matplotlib 实现双(多)Y轴图 先来点简单的 两个Y轴 三个以及多个Y轴 来亿点点美化 先来点简单的 先来个最简单的画图,比如一个 y = s i n ( 2 x ) y=s ...

  2. python使用matplotlib可视化、自定义Y轴轴标签刻度旋转的角度(customize degree rotating axis tick labels in matplotlib)

    python使用matplotlib可视化.自定义Y轴轴标签刻度旋转的角度(customize degree rotating axis tick labels in matplotlib y aix ...

  3. python使用matplotlib可视化、为可视化图像的X轴和Y轴设置自定义的轴标签(axis labels of matplotlib plot)

    python使用matplotlib可视化.为可视化图像的X轴和Y轴设置自定义的轴标签(axis labels of matplotlib plot) 目录

  4. Python Matplotlib设置x轴与y轴相交于心仪的坐标点

    Python Matplotlib设置x轴与y轴相交于心仪的坐标点 在matplotlib中,spines控制了画出图像的四个边框,也即'data area boundaries'.注意到spines ...

  5. python根据x轴、y轴坐标在坐标轴里画出曲线图

    python根据x轴.y轴坐标在坐标轴里画出曲线图 程序实现: import numpy as np import matplotlib as mpl import matplotlib.pyplot ...

  6. matlab画图, x轴和y轴刻度非均匀控制, 画出一张好看的图

    1.学习内容: 使用matlab画图,控制x轴和y轴刻度显示相关代码 2.相关代码: 1.坐标轴的视点(viewpoint): 1.坐标轴的视点(viewpoint):从哪个方向看整个坐标系统,这决定 ...

  7. [pyecharts1.7] 坐标轴设置:X轴、Y轴通用

    本文档以及pyecharts使用手册(超链接)中的其他文档)将会持续更新. 有些内容标记为待更新的,有时间我会补充上.个人精力有限,优先发布在公众号上,有兴趣的可以关注一下哈:微信公众号「燃烧吧数据」 ...

  8. 注意客户提供的注塑机平行炮嘴的方向,是x轴或是y轴,以此来定产品排位的布局

    注意客户提供的注塑机平行炮嘴的方向,是x轴或是y轴,以此来定产品排位的布局 1.双色模设计的基本原则: (1)硬胶做1次,软胶做2次: (2)透明做1次,非透明做2次: (3)成型温度高的塑料做1次, ...

  9. ACMNO.47 矩形面积交(有图) 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。

    题目描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴. 对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积. 输入 输入仅包含两行,每行描述一个矩形. 在每行中, ...

  10. R语言ggplot2可视化时间序列散点图、X轴和Y轴都是时间信息、使用as.POSIXct函数自定义指定Y轴的时间范围(setting time limits in y axis)

    R语言ggplot2可视化时间序列散点图.X轴和Y轴都是时间信息.使用as.POSIXct函数自定义指定Y轴的时间范围(setting time limits in y axis) 目录

最新文章

  1. Data Science | 数据分析
  2. Bootstrap系列 -- 6. 列表
  3. [网络安全自学篇] 八十.WHUCTF之WEB类解题思路WP(代码审计、文件包含、过滤绕过、SQL注入)
  4. android 说出密码,关于未来的住宅的作文400字5篇
  5. 单字节字符集,多字节字符集,Unicode
  6. 设置EntityFramework中decimal类型数据精度
  7. (Hide my Windows)隐藏指定的应用窗口及托盘图标
  8. Ubuntu 搜狗输入法崩溃
  9. 【微信小程序】身份证拍照、上传并OCR识别
  10. python进行中文文本聚类(切词以及Kmeans聚类)
  11. Xubantu安装google 输入法以及You‘re currently running Fcitx with GUI, but fcitx-configtool couldn‘t be found
  12. CorelDRAW X4精简版序列号大家为何对其情有独钟?x8
  13. 【风马一族_php】常用的语句
  14. (转)如何快速学习Tableau Desktop
  15. 俄罗斯方块游戏shell编程代码
  16. 二手贴片机多少钱一台,二手贴片机转让
  17. 日本SUPER DELIVERY电商使用虚拟信用卡海淘购物攻略
  18. Linux 网络之netlink 简介
  19. Substrate框架:平行链及跨链技术简析 结合ETH和IPFS能否成为第一跨链系统?
  20. velocity页面js引入#foreach遍历list

热门文章

  1. Java Quene
  2. OpenCV重写冈萨雷斯——3.2 对数变换
  3. 产品价值公式,一个重要的实用工具
  4. 获得Jolt 大奖的《持续交付》作者David Farley又一新作《现代软件工程》
  5. Unity3D基础:1、窗口界面
  6. 以太坊, FOMO3D ,危险的博弈游戏
  7. lcs leetcode1143 dp
  8. 150行JavaScript代码实现增强现实
  9. INFA Transformation组件
  10. H3C SecPath F1000-AK150无法访问某些网站