Python3使用matplotlib绘图时,坐标轴刻度不从X轴、y轴两端开始
作者:想学代码的土木硕士
这篇文章主要介绍了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绘图时,坐标轴的设置需要放到图形绘制之后。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。