最近在寫論文痴颊,遇到一些函數(shù)圖像需要自己畫,在matplot官網(wǎng)上找到一個例子洪己,在此基礎(chǔ)上進行修改妥凳。
from mpl_toolkits.axisartist.axislines import SubplotZero
import matplotlib.pyplot as plt
plt.rc('font', family='Times New Roman')
plt.rcParams['savefig.dpi'] = 300 #圖片像素
plt.rcParams['figure.dpi'] = 300 #分辨率
import numpy as np
font1 = {'family' : 'Times New Roman',
'weight' : 'normal',
'size' : 100,
}
fig = plt.figure(figsize=(10, 10))
#創(chuàng)建繪圖區(qū)對象
ax = SubplotZero(fig, 111)
#將繪圖區(qū)對象添加到畫布
fig.add_subplot(ax)
#設(shè)置新的坐標軸,但這兩行沒有也不影響
#ax.axis["xzero"] = ax.new_floating_axis(0,0)
#ax.axis["yzero"] = ax.new_floating_axis(1,0)
# 在坐標軸末尾添加箭頭
ax.axis["xzero"].set_axisline_style("->", size=2.5)
ax.axis["yzero"].set_axisline_style("->", size=2.5)
# 使新的坐標軸顯示
ax.axis["xzero"].set_visible(True)
ax.axis["yzero"].set_visible(True)
#把上下左右的邊界去掉
for direction in ["left", "right", "bottom", "top"]:
# hides borders
ax.axis[direction].set_visible(False)
x = np.arange(-4.5, 4.5, 0.01)
y1 = np.where(x<0, 0, x)
y2 = np.where(x<0, 0.1*x, x)
y3 = np.where(x<0, 0.3*(np.exp(x)-1), x)
y4 = x*np.tanh(np.log(1+np.exp(x)))
#設(shè)置刻度值的位置答捕,這里設(shè)置為x軸下面逝钥,y軸左邊
ax.axis["xzero"].set_axis_direction("bottom")
ax.axis["yzero"].set_axis_direction("left")
#設(shè)置x、y坐標軸的范圍
plt.xlim(-5,5)
plt.ylim(-5,5)
#設(shè)置x軸和y軸標簽
#plt.xlabel('x', font1)
#plt.ylabel('y', fontsize=100, c='g')
#設(shè)置刻度值的字號拱镐,注意一下艘款,我對labelsize進行修改,但刻度值字號大小并沒有變化沃琅,不知道什么情況
#plt.tick_params(labelsize=100)
ax.plot(x, y1)
ax.plot(x, y2)
ax.plot(x, y3)
ax.plot(x, y4)
#plt.savefig('mish2.png', dpi=300)
plt.show()
最終所畫出的圖像如下:
該程序存在兩個小問題哗咆,
1.在我把x標簽添加上之后,會出現(xiàn)兩個x;
2.無法調(diào)整刻度值的字號益眉。
然后在網(wǎng)上找到了一個在線畫函數(shù)圖像的工具:desmos晌柬,繪圖功能十分強大姥份,強烈推薦,而且看了介紹可以畫很多好看的圖年碘,值得去好好發(fā)掘一下澈歉。附上我在上面畫的一個函數(shù)圖像:
相較而言,desmos畫函數(shù)圖像更加簡單盛泡,只要把函數(shù)方程打在網(wǎng)頁上闷祥,自動生成函數(shù)圖像,左上角可以進行各種調(diào)整(如x傲诵、y的范圍凯砍,是否在坐標軸上加箭頭等)。
desmos網(wǎng)站鏈接如下:
https://www.desmos.com/calculator
python程序參考官方鏈接:
https://matplotlib.org/gallery/axisartist/demo_axisline_style.html#sphx-glr-gallery-axisartist-demo-axisline-style-py