python绘图坐横坐标轴显示方式
作者:wwwddd666
这篇文章主要介绍了python绘图坐横坐标轴显示方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
python matplotlib绘图
使横坐标轴显示指定内容
在python 绘图的时候直接plot会出现横坐标轴显示为浮点数得情况。
举个栗子:
使用代码:
import matplotlib.pyplot as plt y = [7.1,7.2,7.3,7.4,7.5] x = list(range(0,5))#自动生成0,1,2,3,4这几个数,并添加到list中 plt.plot(x,y) plt.show()
得到结果图如下:
可以看到途中我标出来的坐标轴使浮点数的形式。
解决方法:
只需要在plt.plot后面加上一句plt.xticks(),指明x轴的坐标使用那个列表内容作为表示即可。
下面举个例子,
例子中就以自然数0,1,2,3,4作为坐标,也可以替换成英文单词等等,替换成中文的话需要其他操作。这里留个接口,以后写中文怎么显示。
接上例子代码,改后代码为:
import matplotlib.pyplot as plt y = [7.1,7.2,7.3,7.4,7.5] x = list(range(0,5))#自动生成0,1,2,3,4这几个数,并添加到list中 plt.plot(x,y) plt.xticks(x)#指明x轴坐标使用列表x里的内容 plt.show()
改后作图如下:
python画图,坐标轴问题
画坐标轴的时候出现了2个bug
第一个是y轴的大值在下面,小值在上面
这个bug的原因是y是str类型,而不是Int类型
解决办法是把y轴的每个值都变成int型
v = [int(m) for m in v]
python的数据类型要时刻注意,float, int, str之间一不小心就转换
第二个是y轴的刻度太难看了
解决:
y_major_locator = mticker.MultipleLocator(gap) ax.yaxis.set_major_locator(y_major_locator)
效果:
完整代码:
#!/usr/bin/env python3 # -*- coding:utf-8 -*- ''' @author: funcups ''' import math from util import kernel, axis_x, axis_name from json_util import json_paths_list from jsonsearch import JsonSearch import numpy as np import matplotlib.pyplot as plt import numpy as np import matplotlib.gridspec as gridspec import matplotlib.ticker as mticker if __name__ == '__main__': latency_list = [] Resource = {"DSP": [], "FF": [], "LUT": []} for json_path in json_paths_list: path = json_path fr = open(path, "r") json_data = fr.read() json_data = JsonSearch(object=json_data, mode='s') kernel_data = json_data.search_all_value(key=kernel) Latency = kernel_data[1]["Latency"]["LatencyBest"] DSP = kernel_data[1]["Area"]["DSP"] FF = kernel_data[1]["Area"]["FF"] LUT = kernel_data[1]["Area"]["LUT"] latency_list.append(Latency) Resource["DSP"].append(DSP) Resource["FF"].append(FF) Resource["LUT"].append(LUT) print(Resource) fig = plt.figure(tight_layout=True) gs = gridspec.GridSpec(2, 3) ax = fig.add_subplot(gs[0, :]) latency_list = [int(m) for m in latency_list] yma = int(max(latency_list)) ymi = int(min(latency_list)) gap = int((yma - ymi) / 5) y_major_locator = mticker.MultipleLocator(gap) ax.yaxis.set_major_locator(y_major_locator) print("type(axis_x)", type(axis_x[0])) ax.set_ylabel("Latency") ax.set_xlabel(axis_name) ax.plot(axis_x, latency_list) for i, k, v in zip(list(range(len(Resource))), Resource.keys(), Resource.values()): ax = fig.add_subplot(gs[1, i]) v = [int(m) for m in v] print(type(v[0])) ax.set_ylabel(k) ax.set_xlabel(axis_name) yma = int(max(v)) ymi = int(min(v)) gap = int((yma - ymi) / 5) y_major_locator = mticker.MultipleLocator(gap) ax.yaxis.set_major_locator(y_major_locator) ax.plot(axis_x, v) fig.align_labels() # same as fig.align_xlabels(); fig.align_ylabels() plt.show()
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。