python繪圖坐橫坐標軸顯示方式
python matplotlib繪圖
使橫坐標軸顯示指定內(nèi)容
在python 繪圖的時候直接plot會出現(xiàn)橫坐標軸顯示為浮點數(shù)得情況。
舉個栗子:
使用代碼:
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這幾個數(shù),并添加到list中 plt.plot(x,y) plt.show()
得到結(jié)果圖如下:

可以看到途中我標出來的坐標軸使浮點數(shù)的形式。
解決方法:
只需要在plt.plot后面加上一句plt.xticks(),指明x軸的坐標使用那個列表內(nèi)容作為表示即可。
下面舉個例子,
例子中就以自然數(shù)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這幾個數(shù),并添加到list中 plt.plot(x,y) plt.xticks(x)#指明x軸坐標使用列表x里的內(nèi)容 plt.show()
改后作圖如下:

python畫圖,坐標軸問題

畫坐標軸的時候出現(xiàn)了2個bug
第一個是y軸的大值在下面,小值在上面
這個bug的原因是y是str類型,而不是Int類型
解決辦法是把y軸的每個值都變成int型
v = [int(m) for m in v]
python的數(shù)據(jù)類型要時刻注意,float, int, str之間一不小心就轉(zhuǎn)換
第二個是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()總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python3.5 email實現(xiàn)發(fā)送郵件功能
這篇文章主要為大家詳細介紹了python3.5 email實現(xiàn)發(fā)送郵件功能,包含txt、圖片、HTML、附件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
python2利用wxpython生成投影界面工具的圖文詳解
這篇文章主要介紹了python2利用wxpython生成投影界面工具的圖文詳解,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04

