python坐标网matplotlib_使用matplotlib画双纵轴坐标
一、前言
本文主要使用matplotlib,实现双纵轴坐标的图表绘制。笔者python版本为2.7.15。
二、实践及效果
1. 需求
某个有这么一个成绩表,分别是名字,本次成绩以及进步幅度,现在需要把这个成绩单转为这样一个图表:
横轴是同学姓名,成绩用直方图表示,进步幅度用折线图表示,他们公用同一个横轴。
姓名
本次成绩
进步幅度
小给
88
23%
小人
78
10%
小民
90
5%
小一
66
9%
小个
80
22%
小胶
48
5%
小带
77
19%
2. 核心函数Axes.twinx()
搬运官网的说明:
Create a twin Axes sharing the xaxis
Create a new Axes instance with an invisible x-axis and an independent y-axis positioned opposite to the original one (i.e. at right). The x-axis autoscale setting will be inherited from the original Axes.
大意就是使用这个函数,在原来的坐标系中新建一个共享x轴的双胞胎坐标系,类似的还有twiny。
3. 实现代码
#-*- coding:utf-8 -*-
importnumpy as npimportmatplotlib.pyplot as pltimportmatplotlib.ticker as mtickdefmain():
plt.rcdefaults()
plt.rcParams[‘font.sans-serif‘] = [‘SimHei‘] #指定默认字体
plt.rcParams[‘axes.unicode_minus‘] = False #解决保存图像是负号‘-‘显示为方块的问题
info_list= [(u"小给", 88, 23), (u"小人", 78, 10), (u"小民", 90, 5), (u"小一", 66, 9), (u"小个", 80, 22), (u"小胶", 48, 5), (u"小带", 77, 19)]
positions=np.arange(len(info_list))
names= [row[0] for row ininfo_list]
scores= [row[1] for row ininfo_list]
proges= [row[2] for row ininfo_list]
fig, ax1=plt.subplots()#成绩直方图
ax1.bar(positions, scores, width=0.6, align=‘center‘, color=‘r‘, label=u"成绩")
ax1.set_xticks(positions)
ax1.set_xticklabels(names)
ax1.set_xlabel(u"名字")
ax1.set_ylabel(u"成绩")
max_score=max(scores)
ax1.set_ylim(0, int(max_score* 1.2))#成绩标签
for x,y inzip(positions, scores):
ax1.text(x, y+ max_score * 0.02, y, ha=‘center‘, va=‘center‘, fontsize=13)#变动折线图
ax2 =ax1.twinx()
ax2.plot(positions, proges,‘o-‘, label=u"进步幅度")
max_proges=max(proges)#变化率标签
for x,y inzip(positions, proges):
ax2.text(x, y+ max_proges * 0.02, (‘%.1f%%‘ %y), ha=‘center‘, va= ‘bottom‘, fontsize=13)#设置纵轴格式
fmt = ‘%.1f%%‘yticks=mtick.FormatStrFormatter(fmt)
ax2.yaxis.set_major_formatter(yticks)
ax2.set_ylim(0, int(max_proges* 1.2))
ax2.set_ylabel(u"进步幅度")#图例
handles1, labels1 =ax1.get_legend_handles_labels()
handles2, labels2=ax2.get_legend_handles_labels()
plt.legend(handles1+handles2, labels1+labels2, loc=‘upper right‘)
plt.show()if __name__ == ‘__main__‘:
main()
Technorati Tags: python,matplotlib
4. 效果图
三、参考
(完)
python坐标网matplotlib_使用matplotlib画双纵轴坐标相关推荐
- MATLAB画双纵轴曲线。
MATLAB画双纵轴曲线. 原文地址:Matlab plotyy画双纵坐标图实例作者:gypsy Matlab plotyy画双纵坐标图实例 x = 0:0.01:20; y1 = 200*exp(- ...
- 用python和matplotlib画双坐标系曲线
有时候写论文的时候不免会遇到画曲线图,而且还有可能需要画双坐标系(双Y轴)的曲线图,在百度中找了许久,先mark一下,以下代码就是我论文中用到的,以后应该还会用到,先保存在这里.结果图如下: impo ...
- 【Python】怎么用matplotlib画出漂亮的分析图表
特征锦囊:怎么用matplotlib画出漂亮的分析图表 ???? Index 数据集引入 折线图 饼图 散点图 面积图 直方图 条形图 关于用matplotlib画图,先前的锦囊里有提及到,不过那些图 ...
- 用python画出简单笑脸画法_【Python】怎么用matplotlib画出漂亮的分析图表
特征锦囊:怎么用matplotlib画出漂亮的分析图表 ? Index 数据集引入 折线图 饼图 散点图 面积图 直方图 条形图 关于用matplotlib画图,先前的锦囊里有提及到,不过那些图都是比 ...
- matplotlib 画双轴子图无法显示 x-轴 坐标轴标签
主要问题 1.介绍 如题,画双轴子图不能显示 x-轴坐标轴标签,似乎 "双轴"与"子图"存在冲突有关,当前版本是 anaconda 3.7.4.比较奇葩的是 我 ...
- 用Python的turtle和matplotlib画出圆满和爱心
马上就要到六一儿童节了,小朋友很喜欢画画,这里就用Pyhton来画一些简单形状. 首先是圆形,圆形的寓意是圆满.完美.团圆.优胜和团结.圆形在形状上是一个平面中点到定点距离相等的图形,象征着圆满和完美 ...
- 怎么用matlab画双8曲线,MATLAB画双纵轴曲线。
Matlab plotyy画双纵坐标图实例 x = 0:0.01:20; y1 = 200*exp(-0.05*x).*sin(x); y2 = 0.8*exp(-0.5*x).*sin(10*x); ...
- matlab如何画双x坐标,matlab画双坐标图
整理了一下matlab画双坐标的代码,具体如下.如果想分别设置双坐标的label,可以设置Ylim,YTick和YTickLabel. clc;clear; x=1:20; y1=100*ones(1 ...
- 【python 初学者】使用matplotlib画对比旋风图
在做一些数据可视化时,两个类别数据可以做成对比图,这里使用的小技巧是生成一个固定数据用来放置标签,再将其中一个数据转换成负值,可使图形分成两部分. import matplotlib.pyplot a ...
最新文章
- 更改Jenkins升级站点
- CentOS7.3下配置 Apache2.4 + MySQL5.7 + PHP7.1.8
- 调整weblogic内存的分配和使用
- 掌门教育微服务体系 Solar 第 3 弹:Nacos 企业级落地下篇
- navicat 8 mysql生成关系_MySQL数据库通过navicat建立多对多关系
- JMeter入门案例
- dpdk对虚拟化的支持调研
- ad域用户和计算机搭建,Windows Server 6分钟搭建AD域
- winexec函数 执行powershell 脚本_丢掉 Powershell.exe 来渗透测试
- Avalanche发布AvalancheGo v1.2.3版本
- C51单片机LCD1602驱动程序
- r语言跟python哪个适合数据分析_R语言 vs Python对比:数据分析哪家强?
- 康托尔集的物理意义1.2
- java file.io的各种使用
- Windows 10 下安装pycrypto时出错的解决问题
- 用halcon提取衣服徽章
- uniapp-微信小程序,对子组件实现onShow效果
- 深度学习中的归一化方法简介(BN、LN、IN、GN)
- 第四章 Docker镜像
- .sync修饰符的原理和使用
热门文章
- create-react-app创建的项目配置多入口MPA模式。报Cannot read property ‘filter’ of undefined
- 在几何画板中如何制作圆柱的侧面展开动画_如何用几何画板做三棱柱的侧面展开动画...
- 使用HTML及简单的JavaScript脚本制作一个点名器
- 【leetcode】714. 买卖股票的最佳时机含手续费
- 论文理解:“Designing and training of a dual CNN for image denoising“
- 磨金石教育||商业插画的发展现状如何?学习插画可以月入过万吗?
- Android Studio 编译时报文件不能删除,编译失败
- win32 20子窗口控件的代码
- R语言用quantstrat包获取股票、债券、基金、黄金、原油、指数、外汇和全球经济数据
- python爬虫之静态网页——全国空气质量指数(AQI)爬取