Matplotlib绘图,自定义坐标轴数据刻度格式:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib import rcParams
from matplotlib.ticker import FuncFormatter
config = {
"font.family":'serif',
"mathtext.fontset":'dejavuserif',
"font.serif": 'Palatino Linotype',
"xtick.direction" : 'in',
"font.size" : 10,
"ytick.major.width" : 0,
}
rcParams.update(config)
fig = plt.figure(figsize=(4.13,2.5))
data = pd.read_excel('example.xlsx',header=None,sheet_name='Sheet1')
plt.plot(range(1,301,1),data.iloc[:,0].values,color = 'k',linewidth=1)
# 下面为此博客核心代码
# 定义样式函数
def formatnum(x, pos):
return '—%.2f×10$^{12}$' % (-x/1e12)
formatter = FuncFormatter(formatnum)
# 设置坐标轴格式
plt.gca().yaxis.set_major_formatter(formatter)
plt.yticks(np.linspace(-3.5e12,-3.0e12,6))
plt.xticks(range(1,301,30))
plt.xlim(1,300)
ax = plt.gca()
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_visible(False)
plt.xlabel('Generation')
plt.ylabel('Fitness')
plt.savefig('ex.jpg',bbox_inches='tight',dpi=600)