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 对象中的数据类型

    Python 对象中的数据类型

    对于python,一切事物都是对象,程序中存储的所有数据都是对象,对象基于类创建。这篇文章主要介绍了Python 对象之数据类型 ,需要的朋友可以参考下
    2017-05-05
  • Python中Matplotlib的点、线形状、颜色以及绘制散点图

    Python中Matplotlib的点、线形状、颜色以及绘制散点图

    与线型图类似的是,散点图也是一个个点集构成的,下面这篇文章主要给大家介绍了关于Python中Matplotlib的点、线形状、颜色以及绘制散点图的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • 用Python获取智慧校园每日课表并自动发送至邮箱

    用Python获取智慧校园每日课表并自动发送至邮箱

    很多小伙伴们都在为查看智慧校园课表而烦恼,今天特地整理了这篇文章,不仅可以用Python获取智慧校园每日课表,还会自动发至你邮箱,需要的朋友可以参考下
    2021-05-05
  • Python退出时强制运行一段代码的实现方法

    Python退出时强制运行一段代码的实现方法

    这篇文章主要介绍了Python退出时强制运行一段代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Django中数据库的数据关系:一对一,一对多,多对多

    Django中数据库的数据关系:一对一,一对多,多对多

    今天小编就为大家分享一篇关于Django中数据库的数据关系:一对一,一对多,多对多,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Python利用3D引擎做一个太阳系行星模拟器

    Python利用3D引擎做一个太阳系行星模拟器

    Python有一个不错的3D引擎——Ursina。本文就来利用Ursina这一3D引擎做一个太阳系行星模拟器,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-01-01
  • Pymysql实现往表中插入数据过程解析

    Pymysql实现往表中插入数据过程解析

    这篇文章主要介绍了Pymysql实现往表中插入数据过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • python GUI模拟实现计算器

    python GUI模拟实现计算器

    这篇文章主要为大家详细介绍了python GUI模拟实现计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • Flask模拟实现CSRF攻击的方法

    Flask模拟实现CSRF攻击的方法

    这篇文章主要介绍了Flask模拟实现CSRF攻击的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • python命令行引导用户填写可用的ip地址和端口号实现

    python命令行引导用户填写可用的ip地址和端口号实现

    这篇文章主要为大家介绍了python命令行引导用户填写可用的ip地址和端口号实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11

最新评论