matplotlab刻度线设置——如何在画布的上下左右四条边框上绘制刻度线
我们平时使用matplotlib绘图时一般默认的刻度只在画布的右侧和下侧出现,但是在网上看到其他人的绘图往往都是上下左右四个边框线均有刻度,这是如何实现的呢,今天就给出一种设置画布上下左右四条边框刻度的方法。
一般默认的matplotlib绘图的刻度见下面链接:
python绘图库matplotlib:刻度线的方向调整, in, out, inout
-----------------------------------------------------------------------------
但是如何设置上下左右边框均有刻度呢?
1. 使用双y轴设置(共享x轴)或双x轴设置(共享y轴),可以保证3条边框有刻度但是不能保证4条边框有刻度,该种方法不是很好,这里只是给出实例代码但不推荐
代码:
import matplotlib.pyplot as plt plt.rcParams['xtick.direction'] = 'in' # 将x周的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in' # 将y轴的刻度方向设置向内 x = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
y = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] fig, ax1 = plt.subplots()
ax2 = ax1.twinx() # 做镜像处理 ax1.plot(x, y, "b--")
ax1.plot(x, y[::-1], "g-") ax1.set_xticks([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])
ax1.set_xticklabels([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) ax1.set_yticks([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])
ax1.set_yticklabels([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) ax2.set_yticks([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])
ax2.set_yticklabels(["", "", "", "", "", "", "", "", "", "", "", ])
# ax2.set_yticklabels([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) ax1.set_xlabel('X data', color="r") # 设置x轴标题
ax1.set_ylabel('total_count', color='orange') # 设置Y1轴标题
# ax2.set_ylabel('bad_rate', color='b') # 设置Y2轴标题 ax1.set_xlim(0, 1)
ax1.set_ylim(0, 1) plt.grid(axis="both", ) plt.show()
绘图:

可以看到使用共享轴的方式可以实现三条边框上有刻度,但是如果使用绘制网格grid的时候只能实现绘制横线或竖线但是不能同时绘制横竖线。该种方法有些伪命题的意味,并不是很推荐,再则如果使用grid绘图的话也没有必要实现四条边框绘制刻度的需求了。
去掉gird函数后代码:

import matplotlib.pyplot as plt plt.rcParams['xtick.direction'] = 'in' # 将x周的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in' # 将y轴的刻度方向设置向内 x = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
y = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] fig, ax1 = plt.subplots()
ax2 = ax1.twinx() # 做镜像处理 ax1.plot(x, y, "b--")
ax1.plot(x, y[::-1], "g-") ax1.set_xticks([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])
ax1.set_xticklabels([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) ax1.set_yticks([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])
ax1.set_yticklabels([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) ax2.set_yticks([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])
ax2.set_yticklabels(["", "", "", "", "", "", "", "", "", "", "", ])
# ax2.set_yticklabels([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) ax1.set_xlabel('X data', color="r") # 设置x轴标题
ax1.set_ylabel('total_count', color='orange') # 设置Y1轴标题
# ax2.set_ylabel('bad_rate', color='b') # 设置Y2轴标题 ax1.set_xlim(0, 1)
ax1.set_ylim(0, 1) # plt.grid(axis="both", ) plt.show()
绘图:

============================================
2. 通过设置 tick_params 实现边框刻度
代码:
import matplotlib.pyplot as plt plt.rcParams['xtick.direction'] = 'in' # 将x周的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in' # 将y轴的刻度方向设置向内 x = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
y = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] fig, ax1 = plt.subplots() ax1.plot(x, y, "b--")
ax1.plot(x, y[::-1], "g-") ax1.set_xticks([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])
ax1.set_xticklabels([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])
ax1.set_yticks([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])
ax1.set_yticklabels([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) ax1.tick_params(
# axis='y', # 只设置y轴刻度
direction='in', # 刻度线朝内
# length=6, width=3, # 长度和宽度
# colors='red', # 颜色
# labelsize=15, # 标签字体大小
top=True,
right=True,
# labeltop=True,
# labelright=True
) """
ax1.tick_params(axis='x', # 只设置x轴刻度
direction='in', # 刻度线朝内
length=3, width=3, # 长度和宽度
colors='green', # 颜色
labelsize=15, # 标签字体大小
top=True,
left=True,
labeltop=True,
labelright=True
) ax1.tick_params(axis='y', # 只设置y轴刻度
direction='in', # 刻度线朝内
length=6, width=3, # 长度和宽度
colors='red', # 颜色
labelsize=15, # 标签字体大小
top=True,
right=True,
labeltop=True,
labelright=True
)
""" ax1.set_xlabel('X data', color="r") # 设置x轴标题
ax1.set_ylabel('total_count', color='orange') # 设置Y1轴标题 ax1.set_xlim(0, 1)
ax1.set_ylim(0, 1) # plt.grid(axis="both", ) plt.show()
绘图:

------------------------------------
核心实现代码:
ax1.tick_params(
# axis='y', # 只设置y轴刻度
direction='in', # 刻度线朝内
# length=6, width=3, # 长度和宽度
# colors='red', # 颜色
# labelsize=15, # 标签字体大小
top=True,
right=True,
# labeltop=True,
# labelright=True
)
官方给出函数帮助文档:

===========================================
参考:
https://www.cnblogs.com/chenhuabin/p/12393720.html
matplotlab刻度线设置——如何在画布的上下左右四条边框上绘制刻度线的更多相关文章
- TextView加边框,自定义,上下左右四条线 颜色,想用哪个用哪个
1.这是一个自定义的TextView ,看吧,底下就是代码,应该都可以看懂,这里就不多说了 package com.example.admin.myutilsborder;import android ...
- OpenGl(二)点线设置、多边形镂空
1. 改变点的大小 OpenGL中默认点的大小是1个像素,使用函数glPointSIze可以调整点的大小,入参是GLfloat,相当于是浮点数. 相关代码: void myDisplay(void) ...
- 用Python爬取股票数据,绘制K线和均线并用机器学习预测股价(来自我出的书)
最近我出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中用股票范例讲述Pyth ...
- 使用Python的pandas模块、mplfinance模块、matplotlib模块绘制K线图
目录 pandas模块.mplfinance模块和matplotlib模块介绍 pandas模块 mplfinance模块和matplotlib模块 安装mplfinance模块.pandas模块和m ...
- CAD交互绘制样条线(网页版)
在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::SendStringToExecuteFun 把命令当着函数执行,可以传参数.详细说明如 ...
- CAD交互绘制样条线(com接口)
在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::SendStringToExecuteFun 把命令当着函数执行,可以传参数.详细说明如 ...
- CAD参数绘制样条线(com接口)
在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::PathLineTo 把路径下一个点移到指定位置.详细说明如下: 参数 说明 DOUBL ...
- CAD参数绘制样条线(网页版)
在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::PathLineTo 把路径下一个点移到指定位置.详细说明如下: 参数 说明 DOUBL ...
- CAD动态绘制样条线(网页版)
在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::SendStringToExecuteFun 把命令当着函数执行,可以传参数.详细说明如 ...
- mapboxgl绘制3D线
最近遇到个需求,使用mapboxgl绘制行政区划图层,要求把行政区划拔高做出立体效果,以便突出显示. 拿到这个需求后,感觉很简单呀,只需要用fill-extrusion方式绘制就可以啦,实现出来是这个 ...
随机推荐
- mybatis sqlmap sql in 查询
<select id="selectBlogs" parameterType="map"> SELECT * FROM blog WHERE use ...
- 可以把 FolkMQ 内嵌到 SpringBoot3 项目里(可内嵌的消息中间件,纯血国产)
之前发了<把 FolkMQ 内嵌到 SpringBoot2 项目里(比如 "诺依" 啊)>.有人说都淘态了,有什么好内嵌的...所以再发个 SpringBoot3 Fo ...
- C++获取商店应用(msix应用)桌面快捷方式的安装目录
传统应用的快捷方式目标指向可执行文件的路径,但是对于商店应用(也叫msix打包应用),则指向一个奇怪的字符串,使用IShellLink::GetPath获取路径时,则得到的是空字符串,而我们的最终目的 ...
- python并发执行request请求
在Python中,我们可以使用requests库来发送HTTP请求,并使用threading.multiprocessing.asyncio(配合aiohttp)或concurrent.futures ...
- hive第二课:Hive3.1.2概述与基本操作(修改版)
Hive3.1.2概述与基本操作 1.Hive基本概念 1.1 Hive简介 Hive本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据存储,说白了hive可以理解为一个将 ...
- 在Linux驱动中使用timer定时器
在Linux驱动中使用timer定时器 原文(有删改): https://www.cnblogs.com/chen-farsight/p/6226562.html 介绍 内核定时器是内核用来控制在未来 ...
- Ubuntu下的NVIDIA显卡【安装与卸载、CUDA安装】
@ 目录 0. 显卡GPU的基础知识 1. 显卡安装 Optional: 卸载显卡(当你要换显卡的时候) 2. 安装CUDA 碎碎念:主要是把显卡相关的整合出来,基础知识后面再放上来 显卡安装后可以有 ...
- ubuntu22 python2 pyinstaller 打包报错:'NoneType' object has no attribute 'groups'
前言 最近有个需求,需要在 ubnutu22 上使用 pyinstaller 打包一个python2 的文件. 中间遇到了一些问题: pip2 install pyinstaller 报错 解决方案: ...
- 转-查看Linux CPU个数,核心,线程数
CPU 个数 grep 'physical id' /proc/cpuinfo | sort -u CPU 核心数 grep 'core id' /proc/cpuinfo | sort -u | w ...
- SpringBoot实现RequestBodyAdvice和ResponseBodyAdvice接口
Spring Boot 提供了一种机制,允许开发者在请求体(RequestBody)和响应体(ResponseBody)被处理之前和之后执行自定义逻辑.这通过 RequestBodyAdvice 和 ...