Python3使用matplotlib绘图时,坐标轴刻度不从X轴、y轴两端开始

 更新时间:2023年08月16日 14:32:18   作者:想学代码的土木硕士  
这篇文章主要介绍了Python3使用matplotlib绘图时,坐标轴刻度不从X轴、y轴两端开始问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

使用matplotlib绘图时,坐标轴刻度不从X轴、y轴两端开始

这样输出的图片真的不太好看,请问有什么方法可以避免吗?

(已经查询了百度,没有发现这各个问题的提问和解决方法)

import csv
from datetime import datetime
from matplotlib import pyplot as plt
#从文件中获取日期、气温
filename='death_valley_2014.csv'
with open(filename) as f:
    reader = csv.reader(f) 
    header_row = next(reader)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
    '''for index,column_header in enumerate(header_row):
        print(index,column_header)'''
    dates, highs, lows=[], [], []
    for row in reader:
        try:
            current_date=datetime.strptime(row[0],"%Y-%m-%d")
            high=int(row[1])
            low=int(row[3])
        except ValueError:
            print(current_date, 'missing data')
        else:
            dates.append(current_date)
            highs.append(high)
            lows.append(low)
# 根据数据绘制图形
fig = plt.figure(dpi=128, figsize= (10,6))
plt.plot(dates, highs, c='red')
plt.plot(dates, lows, c='blue')
plt.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)
# 设置图形的格式
plt.title("Daily high and low temperatures-2014", fontsize=24)
plt.xlabel('', fontsize=16)
fig.autofmt_xdate()
plt.ylabel('Temperatur(F)',fontsize = 16)
plt.tick_params(axis= 'both', which= 'major',labelsize= 16)
plt.show()                                                                                                                  

最后输出的结果如下,可以看到,无论是x轴还是y轴,刻度线均未从轴起始端开始出现,也不在轴末端出现。

matplotlib添加坐标轴刻度时的一个常见问题

问题描述

python初学者学习使用matplotlib作图时,可能会遇到添加坐标轴不起作用的情况,这时有可能是因为代码段顺序出了问题。

 我们来看下面一段代码,

import matplotlib.pyplot as plt
import random
# 数据生成
x = range(50)
y = [random.uniform(15, 30) for i in x]
# 画布生成
plt.figure(figsize=(20, 8), dpi=80)
# 坐标轴添加
y_ticks = range(30)
plt.yticks(y_ticks[::5])   # y轴从0到30,间隔为5
# 图形绘制
plt.plot(x, y)
# 图形显示
plt.show()

生成图形如下,

我们发现,纵轴(y轴) 并不是我们设定的从0到30,间隔为5

解决方法

我们将【添加坐标轴】段的代码移到【图形绘制】段代码之后,

import matplotlib.pyplot as plt
import random
# 数据生成
x = range(50)
y = [random.uniform(15, 30) for i in x]
# 画布生成
plt.figure(figsize=(20, 8), dpi=80)
# 图形绘制
plt.plot(x, y)
# 坐标轴添加
y_ticks = range(30)
plt.yticks(y_ticks[::5])
# 图形显示
plt.show()

重新生成图形如下,

这时坐标轴设置就起作用了。

注意:

综上,使用matplotlib绘图时,坐标轴的设置需要放到图形绘制之后。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python 多继承中的一个诡异现象 既是 Father又是grandfather

    Python 多继承中的一个诡异现象 既是 Father又是grandfather

    我们知道,在面向对象编程里面,继承是一个很重要的概念。子类可以使用父类的方法和属性,接下来小编将用举例的方式为大家讲解Python 多继承中的一个诡异现象 其即是爸爸又是爷爷的奇葩现象,感兴趣的小伙伴可以看下面文章具体了解
    2021-09-09
  • Python利用Turtle库绘制一个小老虎

    Python利用Turtle库绘制一个小老虎

    虎年就是要画老虎!本文将通过Python中的Turtle库绘制一个可爱的小老虎,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-02-02
  • python使用opencv驱动摄像头的方法

    python使用opencv驱动摄像头的方法

    今天小编就为大家分享一篇python使用opencv驱动摄像头的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Python中的Super用法示例详解

    Python中的Super用法示例详解

    Python中可以直接通过调用父类名调用父类方法,在多重继承中,使用super()是一个很好的习惯,下面这篇文章主要给大家介绍了关于Python中Super用法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • 用python建立两个Y轴的XY曲线图方法

    用python建立两个Y轴的XY曲线图方法

    今天小编就为大家分享一篇用python建立两个Y轴的XY曲线图方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python类继承用法实例分析

    python类继承用法实例分析

    这篇文章主要介绍了python类继承用法实例分析,以实例的形式详细讲述了Python类继承的实现方法及相关的工作原理,非常实用,需要的朋友可以参考下
    2014-10-10
  • Python flask与fastapi性能测试方法介绍

    Python flask与fastapi性能测试方法介绍

    这篇文章主要介绍了Python flask与fastapi性能测试方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12
  • Python的Django框架中的select_related函数对QuerySet 查询的优化

    Python的Django框架中的select_related函数对QuerySet 查询的优化

    这篇文章主要介绍了Python的Django框架中的select_related函数对QuerySet查询的优化,以减少数据库的查询次数为目的,需要的朋友可以参考下
    2015-04-04
  • Tkinter组件实现Radiobutton的示例

    Tkinter组件实现Radiobutton的示例

    Radiobutton组件用于实现多选一的问题,本文主要介绍了Tkinter组件实现Radiobutton的示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • python使用yield压平嵌套字典的超简单方法

    python使用yield压平嵌套字典的超简单方法

    这篇文章主要给大家介绍了关于python使用yield压平嵌套字典的超简单方法,文中通过示例代码介绍的非常详细,对大家的学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11

最新评论