我们平时使用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://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.tick_params.html?highlight=tick_params#matplotlib.axes.Axes.tick_params

===========================================

参考:

https://www.cnblogs.com/chenhuabin/p/12393720.html

matplotlab刻度线设置——如何在画布的上下左右四条边框上绘制刻度线的更多相关文章

  1. TextView加边框,自定义,上下左右四条线 颜色,想用哪个用哪个

    1.这是一个自定义的TextView ,看吧,底下就是代码,应该都可以看懂,这里就不多说了 package com.example.admin.myutilsborder;import android ...

  2. OpenGl(二)点线设置、多边形镂空

    1. 改变点的大小 OpenGL中默认点的大小是1个像素,使用函数glPointSIze可以调整点的大小,入参是GLfloat,相当于是浮点数. 相关代码: void myDisplay(void) ...

  3. 用Python爬取股票数据,绘制K线和均线并用机器学习预测股价(来自我出的书)

    最近我出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中用股票范例讲述Pyth ...

  4. 使用Python的pandas模块、mplfinance模块、matplotlib模块绘制K线图

    目录 pandas模块.mplfinance模块和matplotlib模块介绍 pandas模块 mplfinance模块和matplotlib模块 安装mplfinance模块.pandas模块和m ...

  5. CAD交互绘制样条线(网页版)

    在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::SendStringToExecuteFun 把命令当着函数执行,可以传参数.详细说明如 ...

  6. CAD交互绘制样条线(com接口)

    在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::SendStringToExecuteFun 把命令当着函数执行,可以传参数.详细说明如 ...

  7. CAD参数绘制样条线(com接口)

    在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::PathLineTo 把路径下一个点移到指定位置.详细说明如下: 参数 说明 DOUBL ...

  8. CAD参数绘制样条线(网页版)

    在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::PathLineTo 把路径下一个点移到指定位置.详细说明如下: 参数 说明 DOUBL ...

  9. CAD动态绘制样条线(网页版)

    在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::SendStringToExecuteFun 把命令当着函数执行,可以传参数.详细说明如 ...

  10. mapboxgl绘制3D线

    最近遇到个需求,使用mapboxgl绘制行政区划图层,要求把行政区划拔高做出立体效果,以便突出显示. 拿到这个需求后,感觉很简单呀,只需要用fill-extrusion方式绘制就可以啦,实现出来是这个 ...

随机推荐

  1. Spring Boot 整合 Fisco Bcos(部署、调用区块链合约)

    简介 在上一节,介绍了Spring Boot 整合 Fisco BCOS的最最基础的案例(SpringBoot成功连接Fisco BCOS,并访问其节点网络 --> 文章链接). 本节,咱们继续 ...

  2. adb连接安卓设备失败failed to start daemon

    adb连接安卓设备失败failed to start daemon Reference:https://blog.csdn.net/whshuo2010/article/details/5109449 ...

  3. 缩小50%,Mini版T3/A40i核心板,让您的设备更小巧!

    小尺寸核心板给用户带来何种价值? 创龙科技常收到用户对于小尺寸核心板的需求反馈,尤其在电力数据采集器.电力DTU.电力通讯管理机.运动控制器.工业HMI.工业网关等工业设备中. 小尺寸核心板3大优势将 ...

  4. 核对不同文件夹所含内容的差异并提取缺失内容:Python代码

      本文介绍基于Python语言,以一个大文件夹作为标准,对另一个大文件夹所包含的子文件夹或文件加以查漏补缺,并将查漏补缺的结果输出的方法.   首先,来明确一下本文所需实现的具体需求.现有一个大文件 ...

  5. 制作visual studio 离线安装包

    应用场景:脱机.内网环境安装vs开发环境. 概述:在互联网环境下载安装工具,下载根据需求并缓存布局(类似功能模块),压缩缓存内容拷贝至离线环境进行安装. 1.官网下载指定版本的vs安装客户端 创建基于 ...

  6. 写给rust初学者的教程(一):枚举、特征、实现、模式匹配

    这系列RUST教程一共三篇.这是第一篇,介绍RUST语言的入门概念,主要有enum\trait\impl\match等语言层面的东西. 安装好你的rust开发环境,用cargo创建一个空项目,咱们直接 ...

  7. Spring的AOP快速实现通用日志打印

    需求分析 针对VideoService接口实现日志打印 三个核心包 spring-aop:AOP核心功能,例如代理工厂 aspectjweaver:简单理解,支持切入点表达式 aspectjrt:简单 ...

  8. Pluto 轻松构建云应用:开发指南

    开发者只需在代码中定义一些变量,Pluto 就能基于这些变量自动创建与管理必要的云资源组件,达到简化部署和管理云基础设施的目的,让开发者更容易使用云. 这里的云资源并非指 IaaS,而是指 BaaS. ...

  9. PHP+Redis 实例【一】点赞 + 热度

    前言 点赞其实是一个很有意思的功能.基本的设计思路有大致两种, 一种自然是用mysql(写了几百行的代码都还没写完,有毒)啦 数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或m ...

  10. oeasy 教您玩转linux 之010208 满屏乱码 bb

    我们来回顾一下 上一部分我们都讲了什么? 黑客帝国 各种速度颜色参数 最后我们想找一个让人完全崩溃的软件包,这不就来了,话不多说,先试试. apt show bbapt search bbsudo a ...