网站首页 > 技术文章 正文
使用Matplotlib的默认画板,画出的函数图像真的太丑了。
比如,画直线、抛物线、指数函数的效果,是这样的、这样的和这样的:
而我们想画出的效果,是这样的、这样的,还有这样的:
今天就给大家分享,如何使用python,绘制美观的数学坐标系与函数图像。
1.坐标系的绘制
为了绘制数学中的坐标轴,需要使用axis-artist库。
定义draw_clear_board函数,用于绘制一个干净的坐标系:
函数传入left、right、down和up,分别表示坐标轴的左、右、下、上四个边界:
在函数中,首先创建一个画板board和一个坐标轴axis。
然后将坐标轴添加到画板中,并设置坐标轴的刻度,另外还要隐藏原来画板上的坐标轴。
接着定义x轴的显示样式。这里使用new_floating函数,创建一个新的悬浮坐标。
使用set_line_style,设置坐标轴的样式,也就是在x轴的末端绘制一个箭头。
使用set_direction,设置x轴的刻度方向。"top"表示x轴的刻度朝上。
使用set_xlim设置x轴的显示范围。其中left和right分别表示x轴的最左端和最右端。
按照同样的方式,设置y轴的样式。
接着在main函数中,设置left和right两个变量,表示坐标轴的最左端和最右端。调用draw_clear_board函数,绘制一个-8到8的坐标系。
2.直线的绘制
下面是直线的绘制代码。
设置函数draw_linear_function绘制一元一次函数。
函数传入直线的斜率k和截距b,left和right为自变量x的取值范围。
在函数中,使用numpy的lin-space,在left和right之间,构造出100个相同间距的浮点数,保存至x。
然后计算函数值y。
调用plot,绘制函数的图像:
在main函数中,绘制三条直线,三条直线的斜率分别为正、负和0:
接着运行程序,会得到三条不同颜色的直线。
3.其他函数图像的绘制
编写绘制抛物线、幂函数、指数函数和对数函数的代码如下:
绘制这些不同的函数,逻辑上和绘制直线是一样的,只是函数计算的方式不同。
例如,一元一次函数,是根据k和b计算直线,而二次函数是根据a、b、c计算抛物线。
幂函数、指数函数、对数函数,也分别有相应的计算方法,分别是计算x的a次方、a的x次方、以a为底,x的对数。
在main函数中,完成直线的绘制后,绘制两条抛物线,它们的开口分别是向上和向下:
绘制前,需要重新设置画板和绘制坐标轴,这里通过draw_clear_board实现:
接着要绘制幂函数、指数函数和对数函数:
为了不让函数值的范围过大,我们要重新调整自变量x的取值范围。
也就是将坐标轴横轴的最左端和最右端,从-8到8调整到-2到2。
这样函数图像会看起来更合适。
具体来说,绘制x的平方和x的3次方,两个幂函数:
2的x次方,3的x次方,两个指数函数:
最后是以2为底和以10为底,两个对数函数:
特别要说明的是,对数函数的自变量取值范围是大于0的,也就是传入的left,不能小于等于0。
我们可以设置一个非常小的数字,这里取的是0.0001。
那么到这里,使用python,绘制美观的数学坐标系与函数图像就讲完了,感谢大家的观看,我们下节课再会。
猜你喜欢
- 2024-10-14 Python之Matplotlib数据可视化一:简易线形图
- 2024-10-14 圆:circle-sin-cos动画的matplotlib
- 2024-10-14 python 100天 68 利用Python绘制两个波形正弦sin函数相关性
- 2024-10-14 画直线不简单!python-matplotlib告诉你为什么
- 2024-10-14 用Python下一场流星雨,女生看了都哭了
- 2024-10-14 手把手教你使用Numpy、Matplotlib、Scipy等5个Python库
- 2024-10-14 走进Matplotlib世界(一)(matplotlib.org)
- 2024-10-14 Python 数据分析——matplotlib 坐标变换和注释
- 2024-10-14 利用axe对象绘制地图局部缩放图(下面几种建模对象能通过基本实体工具直接绘制的是)
- 2024-10-14 Python动态绘图的方法(上)(canvas python动态绘图)
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)