from math import * #导入绘图模块
import numpy as np #导入数值计算模块
import matplotlib.pyplot as plt #导入绘图模块
plt.rcParams['font.sans-serif']=['SimHei'] #绘图中文
plt.rcParams['axes.unicode_minus']=False #绘图负号
import mpl_toolkits.axisartist as axisartist #导入坐标轴加工模块
def elementary_func_draw(X, expr): #定义绘制函数图形的函数,其中x是自变量,y为因变量
#X=np.linspace(-10, 10, 100) #自变量
Y=list(map(lambda x:eval(expr), X))
fig=plt.figure(figsize=(4, 4)) #新建画布
ax=axisartist.Subplot(fig, 111) #使用axisartist.Subplot方法创建一个绘图区对象ax
fig.add_axes(ax) #将绘图区对象添加到画布中
ax.plot(X, Y, label=expr) #绘制函数图形
ax.axis[:].set_visible(False) #隐藏原来的实线矩形
ax.axis["x"]=ax.new_floating_axis(0, 0, axis_direction="bottom") #添加x轴
ax.axis["y"]=ax.new_floating_axis(1, 0, axis_direction="bottom") #添加y轴
ax.axis["x"].set_axisline_style("->", size=1.0) #给x坐标轴加箭头
ax.axis["y"].set_axisline_style("->", size=1.0) #给y坐标轴加箭头
plt.xlim(-max(X), max(X)) #设置横坐标范围
plt.ylim(-max(Y), max(Y)) #设置纵坐标范围
ax.text(-1.0, max(Y), 'y', fontsize=12) #标注y轴
ax.annotate(text='x', xy=(max(X), 0), xycoords='data', xytext=(+0, +5), textcoords='offset points', fontsize=12) #标注x轴
plt.legend()
plt.show()
plt.savefig("func_figure.png")
if __name__=="__main__":
while True:
expr=input("请输入函数表达式(quit退出循环):")
if "quit" in expr:
break
elif "log" in expr: #画对数函数
X=np.linspace(0.001, 10, 100)
elif "asin" in expr: #画反正弦函数
X=np.linspace(-1, 1, 100)
elif "acos" in expr: #画反余弦函数
X=np.linspace(-1, 1, 100)
else:
X=np.linspace(-10, 10, 100)
elementary_func_draw(X, expr)
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
x=np.linspace(10,100,num=1000,endpoint=True)
y=np.multiply(10,x)
y1=np.multiply(5,x)
y2= x ** 2
#显示网格
plt.grid()
plt.plot (x,y)
plt.plot (x,y1)
plt.plot (x,y2)
启动jupyter方法: