python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式


Posted in Python onMay 16, 2020

用matplotlib画二维图像时,默认情况下的横坐标和纵坐标显示的值有时达不到自己的需求,需要借助xticks()和yticks()分别对横坐标x-axis和纵坐标y-axis进行设置。

import numpy as np
import matplotlib.pyplot as plt
x = range(1,13,1)
y = range(1,13,1)
plt.plot(x,y)
plt.show()

x坐标和y坐标都表示1到12的整数,不进行坐标设置时,执行效果为:

python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式

此时的x轴和y轴都是只显示偶数,其它的奇数未显示,这样在展示实验效果或放入文章中都会影响其可读性。

为了设置坐标轴的值,增加其可读性,有多种方法。这里介绍的是matplotlib的函数xticks()和yticks()。

参考文档:xticks()函数介绍 yticks()函数介绍

xticks()中有3个参数:

xticks(locs, [labels], **kwargs) # Set locations and labels

locs参数为数组参数(array_like, optional),表示x-axis的刻度线显示标注的地方,即ticks放置的地方,上述例子中,如果希望显示1到12所有的整数,就可以将locs参数设置为range(1,13,1),第二个参数也为数组参数(array_like, optional),可以不添加该参数,表示在locs数组表示的位置添加的标签,labels不赋值,在这些位置添加的数值即为locs数组中的数。

如下图

import numpy as np
import matplotlib.pyplot as plt
x = range(1,13,1)
y = range(1,13,1)
plt.plot(x,y)
plt.xticks(x)
plt.show()

python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式

xticks()函数中,locs参数为数组x,即1到12所有的整数, 即画出的图像会在这12个位置画出ticks,即上图中的刻度线。

当赋予labels的值为空时,则在locs决定的位置上虽然会画出ticks,但不会显示任何值。

import numpy as np
import matplotlib.pyplot as plt
x = range(1,13,1)
y = range(1,13,1)
plt.plot(x,y)
plt.xticks(x,())
plt.show()

其效果为:

python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式

该例子中,会明显看到locs和labels的关系,locs表示位置,labels决定这些位置上的标签,labels的默认值为和locs相同。

所以,对于labels参数,我们可以赋予其任意其它的值,如人名,月份等等。

import numpy as np
import matplotlib.pyplot as plt
x = range(1,13,1)
y = range(1,13,1)
plt.plot(x,y)
plt.xticks(x, ('Tom','Dick','Harry','Sally','Sue','Lily','Ava','Isla','Rose','Jack','Leo','Charlie'))
plt.show()

在每个标签会依次显示labels中的人名:

python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式

还可以显示月份:

import numpy as np
import matplotlib.pyplot as plt
import calendar
x = range(1,13,1)
y = range(1,13,1)
plt.plot(x,y)
plt.xticks(x, calendar.month_name[1:13],color='blue',rotation=60)
plt.show()

显示效果为:

python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式

这里添加了 calendar 模块,用于显示月份的名称。calendar.month_name[1:13]即1月份到12月份每个月份的名称的数组。后面的参数color='blue'表示将标签颜色置为蓝色,rotation表示标签逆时针旋转60度。

通过上个示例,可看出第3个参数关键字参数**kwargs用于控制labels,具体可通过Text属性中的定义,添加到该参数中,关于其定义可参考在 Text 查询。

另外,通过第1个参数locs可以看出,xticks()函数还可以用来设置使x轴上ticks隐藏,即将空数组赋予它,则没有tick会显示在x轴上,此处参考:x轴数值隐藏。

import numpy as np
import matplotlib.pyplot as plt
import calendar
x = range(1,13,1)
y = range(1,13,1)
plt.plot(x,y)
plt.xticks([])
plt.show()

可看出x轴上没有tick显示:

python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式

同理,对于yticks()函数定义和xticks()函数定义完全相同。对于第一个例子,如果希望在y轴上的刻度线也显示1到12所有的整数,则将lens(1,13,1)赋予yticks()的locs参数即可:

import numpy as np
import matplotlib.pyplot as plt
import calendar
x = range(1,13,1)
y = range(1,13,1)
plt.plot(x,y)
plt.xticks(x)
plt.yticks(y)
plt.show()

其效果为:

python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式

综上,可以设计一个x轴为月份,y为星期的图像:

import numpy as np
import matplotlib.pyplot as plt
import calendar
from datetime import *
x = range(1,13,1)
y = range(1,13,1)
plt.plot(x,y)
plt.xticks(x, calendar.month_name[1:13],color='blue',rotation=60)
today = datetime(2018, 9, 10)
a=[]
for i in range(12):
 a.append(calendar.day_name[today.weekday()+(i%7)])
plt.yticks(y,a,color='red')
plt.show()

python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式

对应一月份选择星期一,二月份选择星期二,往后依次类推,直至将12个月安排完。

以上这篇python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用marshal模块序列化实例
Sep 25 Python
python如何使用unittest测试接口
Apr 04 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
win10下tensorflow和matplotlib安装教程
Sep 19 Python
Python中按值来获取指定的键
Mar 04 Python
基于python if 判断选择结构的实例详解
May 06 Python
python实现美团订单推送到测试环境,提供便利操作示例
Aug 09 Python
利用rest framework搭建Django API过程解析
Aug 31 Python
使用TensorFlow对图像进行随机旋转的实现示例
Jan 20 Python
python库skimage给灰度图像染色的方法示例
Apr 27 Python
Django如何与Ajax交互
Apr 29 Python
Python采集壁纸并实现炫轮播
Apr 30 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 #Python
Python验证码截取识别代码实例
May 16 #Python
基于plt.title无法显示中文的快速解决
May 16 #Python
基于python生成英文版词云图代码实例
May 16 #Python
解决Python数据可视化中文部分显示方块问题
May 16 #Python
Python使用Excel将数据写入多个sheet
May 16 #Python
python小程序之4名牌手洗牌发牌问题解析
May 15 #Python
You might like
配置支持SSI
2006/11/25 PHP
php去除字符串换行符示例分享
2014/02/13 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
PHP函数func_num_args用法实例分析
2015/12/07 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
laravel5.1 ajax post 传值_token示例
2019/10/24 PHP
PHP如何使用array_unshift()在数组开头插入元素
2020/09/01 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
JavaScript Timer实现代码
2010/02/17 Javascript
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
javascript 获取元素样式必杀技
2014/05/04 Javascript
jQuery中replaceAll()方法用法实例
2015/01/16 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
Vue脚手架的简单使用实例
2018/07/10 Javascript
微信小程序实现联动选择器
2019/02/15 Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
2019/07/26 jQuery
vue解决跨域问题(推荐)
2020/11/10 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
Python实现的科学计算器功能示例
2017/08/04 Python
Python使用指定端口进行http请求的例子
2019/07/25 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
投标单位介绍信
2014/01/09 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年财政局工作总结
2014/12/09 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
python字典进行运算原理及实例分享
2021/08/02 Python