- 博客(22)
- 资源 (44)
- 收藏
- 关注
原创 深入浅出matplotlib(12):椭圆示意图
前面学习了圆的示意图,如果让你再做出一个椭圆的示意图呢,你也许以为很简单的,其实不是这样的。因为椭圆的方程需要改写才可以使用到程序里,否则画出来的图,与直线相交的图不在同一个坐标点上。这是由于实际画图的坐标轴不是按比例显示所致,要适应这种情况,就需要使用角度来计算椭圆坐标的点,这样无论比例怎么变化,但是角度不会变形。椭圆上坐标点公式:xp = r*cos(p) yp = r*sin(p)可以得到tan(p)= yp/xp,得到:yp = xp*tan(p)把上式代码椭圆方程:x^2.
2020-11-30 17:28:27 1133
原创 深入浅出matplotlib(11):用直线方式画圆
前面学习过使用matplotlib的点函数的方式来画圆弧,显然是可以完成这个任务的,不过有一点问题,就是绘图的速度有点慢,如果绘的点比较多,就更加慢了。其实示意图都不是要求那么完善的圆,所以可以使用直线来逼近,这样也是很难看得出来的,并且速度比点的方式快很多。因此使用画直线的函数plt.plot的方式,主要用来提高显示的速度。在这里主要来学习显示如下图:在这张图里,绘制了不同的圆,有的是使用点划直线方式显示,有的是使用实线,有的是不同圆叠加在一起形成圆环。不管怎么样显示,主要都是使用画圆的参数公
2020-11-29 22:26:53 1528
原创 深入浅出matplotlib(10):构造圆弧示意图
在很多时候,都需要构造一些示意图,方便观看数据,明白数据的意义。特别是在学校里做老师,或者研究生的论文配图。虽然很多图可以使用绘图软件,或者编辑软件来完成,但是修改起来就比较麻烦一些,如果使用matplotlib来生成,修改一些参数就可以重新生成新的图案,比使用绘图软件或编辑软件来得还快。特别是老师要求课堂上可以动态在修改参数的演示图,就更加来得方便了。下面就是假设老师要画的一个示意图,如图:在这个图里,首先要使用前面学习过的知识来构造一个XY的辅助坐标系,有了这个辅助坐标系,就可以看到X轴和Y轴的
2020-11-26 20:13:11 1664
原创 深入浅出matplotlib(9):知道两点坐标画直线
有时候需要演示一下直线是怎么样生成的,就可以使用matplotlib作为教学工具,把演示过程动态化,并且可视化,也可以让学生快速地学习和修改直线的算法。知道两点坐标画直线有很多种方法,这里主要介绍使用DDA算法:DDA算法是计算机图形学中最简单的绘制直线算法。其主要思想是由直线公式y = kx + b推导出来的。我们已知直线段两个端点P0(x0,y0)和P1(x1,y1),就能求出 k 和 b 。在k,b均求出的条件下,只要知道一个x值,我们就能计算出一个y值。如果x的步进为1(x每次加1.
2020-11-24 17:36:32 4725 3
原创 深入浅出matplotlib(8):辅助指示坐标轴和公式显示
在matplotlib里,虽然有数据的坐标轴设置好了,这个只是为了画数据显示使用的,如果用它来作标示,又有点不足。比如绘图的区域是X轴和Y轴从-10到100,那么原点的位置,就不在(0,0)位置了。这时候,如果图里内容比较复杂,那么看起来就不容易找到原点。为了解决这个问题,需要在坐标点(0,0)的地方显示一个指示用的坐标轴,这样一目了然,就明白图里的数量关系与位置情况。因此需要添加一个辅助坐标系,那么需要怎么来做呢?由于matplotlib里没有现成的函数,一次性地实现这个功能,需要使用它多个函数来
2020-11-23 09:29:21 1306
原创 深入浅出matplotlib(7):图形失真
在某些方面的应用,需要对画图有一个严格的要求,比如不能把一个长方形显示出来是一个正方形,也不能把一个正方形显示为一个长方形。对于这样显示的问题,简单地来说叫做失真,虽然数值上的坐标点的距离是相等的,但是在屏幕上显示的距离不一样,导致失真。假如老师在教小学生认识正方形,但是老师做出来的课件老是显示为长方形,让学生无法认识正方形。为什么会出现这个问题呢?因为计算机的屏幕是长方形,因此很多程序为了尽可能利用屏幕显示,往往不是数学上严格的比例来显示的,会有一定的比例缩放,这时就会导致失真出现。可以看一下图:
2020-11-21 08:42:08 612
原创 深入浅出matplotlib(6):颜色
要想把数据表示得生动的趣,往往需要使用多种颜色来配合,才可以让数据得已区分开来。那么就来学习一下matplotlib的颜色。在matplotlib里主要使用一些简单的字母来表示颜色,比如:‘k’表示黑色;‘b’表示蓝色‘c’表示青色‘g’表示绿色‘m’表示洋红‘r’表示红色‘y’黄色‘gray’或’grey’代表灰色‘lightgray’或’lightgrey’代表浅灰这些颜色都是常用的颜色,如果你想定义一些特别的颜色,上面这些颜色也许不会满足你的需求,那么怎么.
2020-11-21 07:47:06 1446
原创 深入浅出matplotlib(5):坐标轴的标签和标题
当我们想要使用坐标系来表示数据的关系时,往往需要给坐标系进行命名,比如物理学上的时间-距离曲线,就会把X轴命名为时间,Y轴命名为距离,这样画出来的曲线就是时间-距离曲线。当我们想表示收入-时间曲线时,可以把X轴表示月份,把Y轴表示收入金额。类似的情况有很多,但是总需要给坐标轴进行一个命名,或者分配坐标轴的对应的数据。因此,对于画图来说,一定要标明坐标轴的名称,这时就需要使用到函数plt.xlabel()和plt.ylabel()。如下图所示:代码与图的关系:从上图里可以看到,这两行代码对
2020-11-19 10:22:12 1981
原创 深入浅出matplotlib(4):网格线的颜色和刻度
有时候想显示的网格线与数据显示的曲线不一样,有明显的对比效应,最先想到的就是使用颜色。比如数据使用使用黑色,而网格使用蓝色。如下图就是显示蓝色的网格线:在这里还是使用plt.grid函数,这个函数的定义如下:matplotlib.pyplot.grid(b=None, which='major', axis='both', **kwargs)由于支持的参数很多,这里主要介绍这几个:b: 这个参数是表示是否显示网格线。如果这个参数为None,但后面有别的参数,说明想显示网格线,就会自动设置
2020-11-14 23:12:50 4676
原创 深入浅出matplotlib(3):设置绘图区域大小
前面学习了怎么样找到区域,也就是找到可以绘画的地方,现在就相当于画家有了笔和纸,这样要考虑怎么样去布局这张白纸了。如果学习中学的数学,肯定知道画曲线时,先要确定一个坐标系,通常就是画出直角坐标系。要想画出直角坐标系,那么就需要确定原点的位置和两条坐标轴的方向,当然还要确定两条坐标轴的长度,以及每个坐标轴的刻度的大小。那么你就会好奇地问,matplotlib里怎么样设置坐标轴的刻度呢?带着这个问题,下面通过例子演示:在这里可以看到,坐标系的原点是在(-10,-10),最大值分别是10。要设置这样的坐标
2020-11-09 22:15:14 3620
原创 深入浅出matplotlib(2):绘图区域
假设我们要开始学习画画,那么首先要准备好的工具就是笔和纸,接着根据需要确认纸的方向。一般情况下,纸张都是长方形,要确认它是横着摆,还是竖着摆,不同的摆放会导致显示的空间布局。计算机的发展,也是这样的,可以认为计算机的显示器就是一张白纸,显示器怎么样摆放呢?往往是横着摆放。当我们想要在计算机显示器上显示东西时,那么就需要了解显示器屏幕的坐标布局,一般情况下是如下图所示:屏幕X轴的方向是从左往右,屏幕Y轴的方向是从上往下,这是计算机里显示器的基本方向,但是当你想在这张白纸里显示数据时,并不想按Y轴的方向
2020-11-08 13:46:49 592
原创 深入浅出matplotlib(1):为什么要使用matplotlib
第一次工业革命是蒸汽时代,第二次工业革命是电气时代,第三次工业革命是信息时代,马上要迎来第四次工业革命—智能时代。我们知道整个世界主要有三大元素组成:物质、能源和智慧。前两次的工业革命都是则重于物质和能源的进步,后两次的工业革命却是智慧的进步。在信息化时代,已经把世界改造得天翻地覆,那么随着智能时代的到来,将是现在无法想像的。比如所有汽车都具有自动驾驶之后,会不会汽车就是一种机器人的化身?这时马路上所有汽车都是能相互说话,相互配合,像一群蜜蜂一样相互配合之后,做出来的成就远远超出一个蜜蜂的能力。如果汽车真的
2020-11-07 18:51:59 1451 2
原创 《Fluent Python》读书笔记-2.9
如果你有很多数组要进行保存数据,并且进行查看和运算,那么你就必须要熟悉memorview的使用,否则你会导致处理数据效率低下。使用memorviewmemorview类是一个共享内存数据的类,当你使用它来切片数组时,并不需要拷贝数据就可以查看。因此,它被大量地使用在NumPy库里。memoryview本质上是Python本身的一种NumPy数组结构。它允许您在数据结构之间共享内存(比如PIL图像、SQLlite数据库、NumPy数组等),无需预先复制。这对于大型数据集是非常重要的。m..
2020-11-07 11:23:42 387 3
原创 《Fluent Python》读书笔记-2.8
在序列容器里有一个经常的操作,那就是排序。list.sort 和 内置sorted函数list.sort方法是把列表在原地进行排序的操作,也就是说不产生新的列表返回,它执行结束之后返回None。此方法返回None表示它不创建新的列表对象返回,并且它在原地修改了列表,这一个编程习惯在Python里形成了传统。因而所有Python的API函数或方法都遵守这个偏好,明确告诉调用者,它在原地对对象作了更改,并没有新对象创建返回。如果你去查看一下,会发现random.shuffle方法也遵守这个规..
2020-11-06 18:19:26 276
原创 《Fluent Python》读书笔记-2.7
大家经常使用Python就会发现有一些公共操作,比如对序列容器进行并接和重复。在Python里,主要通过加号(+)和乘号(*)来实现。+和*对容器操作Python编译器的开发人员使用+和*来实现对序列容器进行串联操作。当我们使用+来串联时,一般要求两个参数都是同一个类型的序列容器对象,当拼接完成之后是重新创建了一个新的对象,并不会影响原来的对象。为了拼接多个相同的对象,可以采用*来操作:>>> l = [1, 2, 3]>>> l * 5..
2020-11-05 15:56:40 347
原创 《Fluent Python》读书笔记-2.6
切片(Slicing)在所有序列容器,包括列表、元组、字符串等等,它们都支持切片操作,这是Python语言的强大武器,本文将开始学习切片的高级使用技巧。为什么切片和Range操作都不包括最后一项?从Python语法里知道,当进行切片操作时,比如mylist[0,2]的操作,并不包括最后一项[2]。同样range迭代生成也是不包括最后一项,这是到底是什么原因呢?其实它跟C语言和其它很多语言一样,下标变量的开始都是从0开始计算的。使用这样的约定有以下好处:1)容易看出来切片操作或ran.
2020-11-05 09:49:18 262
原创 《Fluent Python》读书笔记-2.5
前面学习了元组拆包,用处很多,可以用来多个变量并行赋值、交换数据、调用函数、函数返回值分拆等等。接着思考这样一个问题,如果一个生成器表达式产生不定项的数据,怎么样来进行并行赋值呢?使用星号(*)来接收不定项的赋值在Python的函数里,常常使用*args来接收不定项的函数参数,这是Python的重要编程规则,因此在Python 3以后,也把这个编程规则进行扩展,应用到并行赋值方面:>>> a, b, *rest = range(5)>>> a, b,.
2020-11-04 12:19:38 300
原创 《Fluent Python》读书笔记-2.4
元组(tuple)不仅仅是不可改变的列表在很多Python的教材里都是把元组当作不可修改的列表来看待,其实元组不仅如此,还有另外一个大作用,当作没有记录名称的记录数据表示。这种使用方法往往容易被人们忽略它,导致广泛地缺乏认识到它的作用。元组作为记录当你把元组当作记录使用时,元组里每一项当作一个字段,而字段的位置就表示了它的意义。比如(姓名,姓别,学历),这个元组第一项就是表示姓名,所有数据记录必须按照这个顺序来排列。如果你只是把元组当作不变的列表使用时,其实元组里有多少项,或者每项的..
2020-11-03 17:31:25 312 1
原创 《Fluent Python》读书笔记-2.3
接着下来介绍一下怎么样使用列表解析来生成笛卡尔积,其实就是每一项由两个或多个列表的项联组成。如下图所示:笛卡尔积列表解析能从两个或多个列表联合生成笛卡尔积,每一项由每个列表里的项构造,然后保存为一个元组,把这些元组构造成一个列表,这个列表的长度等于所有输入列表长度的乘积。下面的例子:在这里有3种类型和4种花色的牌,可以组成12种结果。接着下来举一个小的例子,假如产生T-shirt有两种颜色和三个尺码,使用列表解析来生成,共有6项:>>> colors..
2020-11-03 14:09:59 321
原创 《Fluent Python》读书笔记-2.2
在众多的序列型的容器里,最基本的容器是列表(list),它不仅可修改而且可以昆合不同的数据类型。我相信所有人都学会它的基本操作,但是有点难度的就是列表解析(list comprehension)了。一种强大的构建列表的方法,但由于语法的不熟悉,或不理解,它的作用被低估计了。掌握列表解析就是打开生成表达式的大门,生成表达式在其他用途中,它可以产生元素来填充任何类型的序列。因此通过对比列表解析表达式和生成表达式的方式来理解它们的作用。列表解析(List Comprehensions)和生成表达式(Ge.
2020-11-02 11:40:53 319
原创 《Fluent Python》读书笔记-2.1
Python的创建人Guido在创建Python之前,他用了10年的时间在开发一种叫ABC的语言,这种语言是为初学者量身定制。在ABC里定义了很多像目前Python的属性:序列范型操作、内置元组和映射类型、缩进排版结构、没有声明的强类型变量等等。因此,Python对用户这么友好并不是偶然决定的,而是来源于原来ABC语言的一些特性的继承。 Python从ABC语言继承了序列统一操作的习惯,字符串、列表、字节序列、数组、XML元素集和数据库的结果集,都采用一套公共的操作,比如迭代访问、切片、排序和并接...
2020-11-01 17:44:02 391
原创 对比学习Python格式化字符串的三种方法(%,format(),f-string)
技术总是随着时代进步而不断地往前推进,也许因为人们对自己的需求不太清楚,也许是由于当时思维模式不对,也许是习惯的力量。在Python的功能里,也是一步一步地往前推进,它的易用性也是一步一步地更方便了。Python 3.6 引入了新的字符串格式化方式 f-string,与其它格式化方式相比,不仅简洁明了,可读性更好,更不容易出错,而且运行效率也更高。你应该马上开始使用这种新的格式化方式,本文将解释其原因与具体用法。但在此之前,让我们先看一下 f-string 之前的字符串格式化方式。 所有编程开发人...
2020-11-01 10:11:25 809
python抓取天气并分析 实例源码
2017-08-28
书《深度学习》
2017-03-13
国产8051模拟器
2016-09-10
tinyxml2配套源码
2016-06-27
selenium的浏览器驱动
2016-06-14
开源鸿蒙4.0不能进入桌面的补丁
2024-03-17
开源鸿蒙 4.0 RK3566开发板配置
2024-03-17
svm_hog_data.rar
2020-03-02
实现numpy的C++库扩展
2019-11-24
python web py入门配套源代码
2018-02-23
webpy演示例子1
2018-02-21
胶囊模型的代码
2018-02-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人