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 合并拼接字符串的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Python目录下文件读取方式

    Python目录下文件读取方式

    这篇文章主要介绍了Python目录下文件读取方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python函数的参数类型和使用技巧详解

    Python函数的参数类型和使用技巧详解

    这篇文章主要介绍了Python函数的参数类型和使用技巧详解,函数指通过专门的代码组织,用来实现特定功能的代码段,具有相对的独立性,可以被其他代码重复调用,需要的朋友可以参考下
    2023-08-08
  • Python中if __name__ ==

    Python中if __name__ == "__main__"详细解释

    这篇文章主要介绍了Python中if __name__ == "__main__"详细解释,需要的朋友可以参考下
    2014-10-10
  • numpy判断数值类型、过滤出数值型数据的方法

    numpy判断数值类型、过滤出数值型数据的方法

    今天小编就为大家分享一篇numpy判断数值类型、过滤出数值型数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python数据可视化之简单折线图的绘制

    Python数据可视化之简单折线图的绘制

    这篇文章主要为大家详细介绍了Python数据可视化之绘制简单折线图的相关资料,文中的示例代码简洁易懂,感兴趣的小伙伴可以了解一下
    2022-10-10
  • python实现复制文件到指定目录

    python实现复制文件到指定目录

    这篇文章主要为大家详细介绍了python实现复制文件到指定的目录下,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • python 实用工具状态机transitions

    python 实用工具状态机transitions

    这篇文章主要介绍了python 实用工具状态机transitions的使用,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-11-11
  • python网络爬虫精解之Beautiful Soup的使用说明

    python网络爬虫精解之Beautiful Soup的使用说明

    简单来说,Beautiful Soup 是 python 的一个库,最主要的功能是从网页抓取数据,Beautiful Soup 提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能,需要的朋友可以参考下
    2021-09-09
  • Python+folium绘制精美地图的示例详解

    Python+folium绘制精美地图的示例详解

    folium是一个基于leaflet.js的python地图库,可以通过folium来操纵数据,并将其可视化。本文将通过各种示例详细讲解如何利用folium绘制精美地图,需要的可以参考一下
    2022-03-03

最新评论