最近在写论文,遇到一些函数图像需要自己画,在matplot官网上找到一个例子,在此基础上进行修改。

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))

#创建绘图区对象

ax = SubplotZero(fig, 111)

#将绘图区对象添加到画布

fig.add_subplot(ax)

#设置新的坐标轴,但这两行没有也不影响

#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)))

#设置刻度值的位置,这里设置为x轴下面,y轴左边

ax.axis["xzero"].set_axis_direction("bottom")

ax.axis["yzero"].set_axis_direction("left")

#设置x、y坐标轴的范围

plt.xlim(-5,5)

plt.ylim(-5,5)

#设置x轴和y轴标签

#plt.xlabel('x', font1)

#plt.ylabel('y', fontsize=100, c='g')

#设置刻度值的字号,注意一下,我对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()

最终所画出的图像如下:

mish2.png

该程序存在两个小问题,

1.在我把x标签添加上之后,会出现两个x;

2.无法调整刻度值的字号。

然后在网上找到了一个在线画函数图像的工具:desmos,绘图功能十分强大,强烈推荐,而且看了介绍可以画很多好看的图,值得去好好发掘一下。附上我在上面画的一个函数图像:

desmos-graph.png

相较而言,desmos画函数图像更加简单,只要把函数方程打在网页上,自动生成函数图像,左上角可以进行各种调整(如x、y的范围,是否在坐标轴上加箭头等)。

声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。