(a) 考虑到共轭类和中心要么不交,要么是单点且包含于中心,于是 自然意味着存在包含于 且长度与 互素的轨道 。对 无非相当于 被共轭作用的轨道,于是即知
(b) -子群存在性由交换群相关假设给出。

$$

(a) 假若有两个不同的Sylow -子群 ,则 ,然而考虑某个 以左乘作用于 $$

(Remark) 诺特环 的形式幂级数环是诺特环

中理想 ,考虑理想 定义为一切 的幂级数第 次项系数( 为最小系数非零次项次数),则 构成 中理想升链从而稳定为 。因而对某个形式幂级数 ,不妨设其非零项次数大于等于 部分和上一个证明完全无异),则会得到一系列( 被消去后变成
这涉及到无穷多次求和的操作,但注意到其中 系数(对次数大于等于 时)形如可和,从而也是形式幂级数。

显然 可以Zorn取极大元 。假设 ,而 ,那么 有限生成,也就是被 生成,这里 ,特别地,每个 都可以被写成 形式,从而设 ,则 。而 ,从而 严格包含 ,因而有限生成,而 有限生成,矛盾。

显然如果 幂零则 皆幂零。反过来,如果诸 幂零,考虑理想 ,假设 生成,取 ,则 中每项皆为 中元素,而 生成,其中 ,因而 ,于是

如果 诺特,对 中理想 ,考虑它在 中生成的理想,再取生成元组常数项系数即可证明有限生成。(或者考虑 作为 的商环诺特)

和基定理证明毫无区别。

考虑 中的理想 ,其中 的生成元,则如果它有公共零点 ,那么首先诸 处为 ,从而 处为零,但这意味着 处的取值是 ,矛盾。于是 没有公共零点,由弱零点定理它是 。特别地带入 ,把分母乘过去即知

,由 知其不为代数整数(否则比如说乘某个 中元素整除 中首一多项式,那把分母最小公倍数乘起来,则在 中整除等式右边不整除左边,矛盾)。

,由于 中整闭(因为是UFD),故只需证 中整闭。假设 满足关系则考虑 最高次项系数 ,它满足某个 系数多项式从而属于 。现在对 归纳证 ,事实上考虑 降次即可。

考虑 ,满足关系

Emil Artin之Algebra with Galois Theory中Ch5的省流版。以及Borcherds的Galois Theory课的部分内容

分裂域与代数闭包

,则存在域扩张 使 上分裂

中有素因子分解扩域 得到 的一个根,在其上 至少多出一个线性因子,如此重复即可。

5.1中得到的扩域是最小的使 分裂的扩域

任何 分裂的扩域都包括 的根 ,也包括它们生成的 -代数。反过来, 的全体多项式组成,从而 的全体多项式组成,……

假设 同构, 对应于 ,假若 分别是 分裂域,则 同构可以延拓至 同构,特别的, 上分裂域在同构意义下唯一

素因子分解给出对线性因子个数 反向归纳(): 关于 关于 的单代数扩张同构,所以把基域换成 ,则即可归纳。

对域 ,存在 的代数扩域 ,使得 代数闭,把 称为 的代数闭包

考虑 中全体不可约多项式集合 ,考虑环 中诸 生成的理想,它是真理想(只需证明对有限 个不可约多项式这个结论成立,然后对 归纳商掉 即可),从而包含于极大理想 中,令 ,则 可以嵌入 (因为 都可逆)且 的根,从而 是代数扩域。

现在假设 上代数,即有关系则因为 有限扩张, 有限扩张,所以 上代数,即

注:代数闭包在同构意义下唯一,但并不具有函子性(比如说事实上考虑它的构造依赖选择公理),以及绝对Galois群 也如此,但取定了代数闭包之后的(带基点)绝对Galois群具有函子性。域论的概念和拓扑中有所对应,扩域对应覆叠空间,Galois群对应基本群,而此处和代数闭包的情形类似,道路连通空间的基本群和基点选取无关,但是不同基点之间基本群的同构证明依赖两点间道路选取,所以 不具有函子性,但 具有函子性。

一种绕过这组问题的手段是考虑Groupoids(态射皆iso的范畴),我们有 的absolute Galois groupoid(Object为代数闭包 ,态射则是代数闭包间同构),与 的fundamental groupoid(Object是 ,态射是道路的同伦类)类似。

代数闭,这是著名的代数基本定理。我们给出它的一个拓扑证明。考虑不可约多项式 非零,于是在异于原点的一处。而对充分大的 ,在这个圆上 的轨迹近似于大圆,从而随 绕大圆一周 绕原点 周,然而在 缩小到 的过程中winding number由 变化到 ,那么应有一个中间时刻 过原点。

Puiseux级数域 代数闭。

有限域

有限域 的分裂域,其中 阶有限域在同构意义下唯一

找到有限域上不可约多项式的一个有效算法是筛法,和整数情况并无区别,比如说我们可以找到 上的不可约多项式是这多少使我们可以具体计算 ,譬如说 当然这里还有 ,我们自然会去好奇这两个不同构造间具体的同构如何。事实上,考虑 ,从而 ,于是 ,从而 给出我们想要的同构。

我们可能很想要一个“标准的”多项式取法,让我们可以比较典范地把 写成对应多项式在 上的商,不过一般来讲并没有这么一个典范的取法。

当且仅当

事实上考虑 作为 -线性空间即知 ,反过来如果 ,那么 上的分裂域就是

作为一个应用,我们可以计算 上某个首一特定次数的不可约多项式数量。比如说对 次不可约多项式,则按极小多项式考虑只需考虑
作为结果我们知道 可以被分解为 次多项式, 次多项式, 次多项式和 次多项式的乘积。

可分扩张

假设 的分裂域,则

假设 有不可约因子 的根是 ,则 给出 的同构,从而延拓至 的自同构

上有素因子分解 非线性,如果 分裂域 中皆无重根,则 中没有 以外的元素在 作用下不动

事实上只需证明,对代数扩张 ,假若 极小多项式 中分裂无重根,则 作用下, 中没有 以外的元素不动。不妨设 的根 ,则 给出 的自同构,则作用于不动元 得到多项式 个根,因而系数全为 ,于是

接着对 反向归纳,如果 情况下命题成立:考虑取 的根 ,则在 中有分解 其中 整除某一 仍然是 上的分裂域,而 处继承来无重根的性质。

特征 域上不可约多项式无重根(也就是可分),特征 上不可约多项式则会分裂为 形式

如果不可约多项式 有重根 ,则 ,这意味着 ,考虑次数知 。特征 直接导致矛盾,特征 则推出 具有形式,令 ,如此重复直至 不可再使 增大。而意味着 不可约,从而无重根。现在有 ,取 的根,则

有限域的代数扩张皆可分

只需考虑有限扩张, ,则因为 可分(考虑无重根或者导数 )所以扩张可分。

考虑一个不可分扩张的例子。假设域 有正特征 是代数扩张,这里 不可约,但在

假设 是代数扩张,设 的可分闭包(即所有 中可分元组成的域),则 是可分扩张,而 是纯不可分扩张,也就是 中所有元素都是某个 的根,这里

Galois理论的主要关注点就在于可分扩张的部分。

正规扩张

一般来说正规扩张的正规扩张未必正规,例如

中的不同特征(即 中非零元) 线性无关,特别的, 的不同自同构作为乘法群的特征 -线性无关

假设诸 的非平凡线性组合为 ,则取某个极小线性相关组 ,给原始式子乘 后两式相减得到取使 ,则与极小线性相关的条件矛盾。

假设 是由 的自同构组成的群 中元素, 的不动域,则

只需证对 个元素 线性相关。方程总有在 中的非零解 。因为 是群, 总会出现在 中,那么如果能从这组解诱导到一个诸 都在 中的非零解,则就得到 ,从而线性相关。

现在考虑以上方程被 作用,也就是这无非是以上 个方程的置换,所以 作用于 依然是方程的解,从而 是方程的解,而这组新解因为对称性被 作用不动,从而属于不动域

现在只需要找到合适的 使新解非零。考虑到 乘上任意 中元素仍然是以上方程的解,所以如果 ,可以设 为任意 中元素。现在设 为使 非零的 (按线性无关存在性有保障),那么便证完。

-自同构 组成的群, 的不动域,则 是可分正规扩张

,令 ,将诸 中不同的取出来 ,考虑 作用于 的系数,则无非相当于对 做置换,所以 保持不动,因而系数都属于 。诸 中出现 ,所以 中有

事实上 中的 是不可约多项式。考虑 作用于 都是 的根,于是 是以 为根的非零多项式中次数最小的,从而不可约。这给了我们一种求 极小多项式的办法。

有限扩张 是正规扩张当且仅当 上某个可分多项式的分裂域

:定理
:取 一组基,由 给出可分多项式 ,则考虑它们乘积的分裂域即可。

如果 正规, ,则 正规

事实上我们有

是代数扩张,则以下条件等价:(1) 正规 (2)如果 中不可约多项式 中有根,则 中分裂 (3) 上某个可分多项式族的分裂域 (4) 取 的代数闭包 ,对 ,对任意

(2)(3):取 上元素 的极小多项式 的分裂域是
(3)(4): 保持 不动。
(4)(2): 中不可约多项式 中有根 ,在 中还有其它根 ,则事实上存在 -自同构,于是

Galois理论基本定理

是有限扩域,,以下条件互相等价(满足其一者称为Galois扩张):(1) 是正规可分扩张 (2) (3) (4) 是某个可分多项式的分裂域

(1)(2) :对 ,由于 正规, ,如果 ,则 种嵌入,再次基础上 中有 种取值…… 种嵌入。考虑到 是分裂域,所以
(2)(3) :从前面证明中也可以得出 对任意 成立,从而对扩域 于是
(3)(4) :定理
(4)(1) :显然。

(Galois Corresponding)有限扩张 Galois当且仅当任何中间域 和子群 有反序的互逆双射

假设 Galois。从 出发到 ,我们知道 ;从 出发到 ,我们已知 ,图解如下现在我们想证明这两个包含关系取到相等,只需证明它们具有相同大小(对域指index,而群指阶数)。

我们将证明命题中的两个映射都保持“大小”,从而我们想证明的两个包含关系两端大小相同。具体来说,我们将证明 总成立。上面已经证明了 Galois,从而 。到现在为止还没有用上 Galois的条件。

现证 正规所以 ,从而 中自同构构造可以分解为两步,取出 中映射和从 的延拓。取定 自同构的延拓(也就是满足 的自同构 )数量不超过 的取法不超过 ,于是 Galois,从而 ,因而上面的两个 的不等式都严格取等。特别地, 自同构的延拓数量严格等于 ,而这些延拓的数量等于 ,于是我们证明了

注:如果没有 Galois的条件,令 ,我们将得到 子群和 子扩张的一一对应(事实上 Galois……)

考虑 上的分裂域,Galois群同构于 ,具体来说就是 的置换,它Galois群的子群格和子扩张格如图,标绿线的是正规扩张/正规子群,画圈的是共轭类

考虑域扩张 ,首先注意到Frobenius自同构 的order是 ),而 ,于是 一些子群格和子扩张格如下

考虑 ,其中 是七次单位根,则易见 的乘法群,它的子群格如下由此我们可以反求出它对应的子域。对三次的子扩张,它在 (也就是复共轭)下不动,于是其中包含 ,令 考虑则立即知遂求出 的多项式 。对另一个二次的子扩张,考虑 ,则 自然在对应子群作用下不动。现在考虑 ,于是 ,从而

,具体来说 形如具有二面体群的乘法规则 。事实上我们可以把 的四个四次根画出来由于 被保持,所以 中元素都是正方形的对称。它的 阶子群有 ,二阶子群则有五个,子群格形如

D8h¾2;¿ih¾ih¾2;¾¿ih¿ih¾2¿ih¾2ih¾¿ih¾3¿i1


也可以可视化如图,上面五个二阶群中绿线是对称,中间的是旋转180度,下面的则是矩形的对称群和正方形的旋转群通过这些Galois群可以很容易地计算出对应的不动域具体来说,由于 是翻转,所以正方形旋转群的不动域是 ;两个扁矩形的对称中,如果不是180度旋转(也就是改变这些四次根的平方的情况)则需要带一个 的翻转,所以对应不动域分别是 ;显然水平竖直对称分别对应 ,180度旋转是它下面三个子扩张之和,所以是 ,而对两个斜向的对称,考虑比如说把 加起来,则得到一个不动元 ,所以可以算出两个不动域分别是

这里左边的两个对称和右边的两个对称分别互相共轭(从而不动域也共轭),除了这四个子扩张,剩下的子扩张皆正规。

(i):若 非单射,则 是无穷严格升链,矛盾。 (ii): 若非满射,则 真包含于 ,而由 单性 真包含于 ,以此类推得到无穷包含降链,矛盾。

改成有限生成对升链条件相关证明并无影响。

考虑 ,诱导出 的嵌入,而诺特模的直和诺特。

注意到作为 模,取 的生成元组,则 是诺特模的子模从而诺特,而 ,由上一题结论知 诺特。

对Artin环情形此结论不成立,本章开头例子里(3)中Artin非诺特环就是反例。显然 ,而 非Artin。

子空间诺特无非relative topology的定义,而拟紧则是考虑包含升链即可。

不可被表为不可约闭集有限并的 闭子集组成的集合有极小元,但它要么自己就是不可约闭集,要么可被表示为两个真子闭集的并。

的降链条件由 的升链条件给出。反过来 诺特并不意味着 诺特,譬如说 ,它的素谱是单点。

全体极小素理想组成集合 拟紧,而极小素理想间互不包含,则极小素理想多于一个时对应的基本开集 并覆盖 ,可以取出有限覆盖意味着极小素理想有限。

Artin模

Reading: Section 2.4
Exercises: 2.23
Classify the modules of finite length over k[x]. Find an Artinian module over this ring that is not Noetherian.

一切只有有限多元素的模都既Noether又Artin;有限生成的线性空间既Noether又Artin。

Noether但不Artin,考虑 Noether但不Artin

作为 -模既不Noether也不Artin

Artin但不Noether,事实上注意到它是 ,从而有包含升链 ,而由于这些子模给出它全部真子模,所以它Artin。它被称作 的injective envelope(也是所谓的Prüfer p-群),某种意义上是 的对偶。

任何PID商去某个非零理想都同时是Noether环和Artin环;作为非交换的例子,矩阵环 和有限群的群环 都既Noether又Artin,事实上任何是有限维 -线性空间的 -代数都既Noether又Artin,因为它们的理想都是子空间。

单模是非零的,子模只有 和它自己的模

上的单模有且仅有 的极大理想

对模 ,称它的一个合成列是子模的链且每个 皆为单模,如果 有合成列则称 有有限的长度

有限维线性空间都有有限长度, 都有有限长度

长度有限当且仅当 既Noether又Artin

假设 长度有限。首先单模既Noether又Artin,而我们知道如果有正合列如果 Noether则 Noether,如果 Artin则 Artin,那么考虑一系列正合列即可证明 既Noether又Artin。

反过来,可以不断选取 作为极小的真包含 的子模,这样取出来的升链一定稳定。

下面这个定理属于带算子的群上Jordan-Holder定理在关于模的情形:

如果 长度有限,则 的合成列都有相同的长度,且每个单模在合成列中出现的次数与合成列的选取无关

取两个合成列 ,画成下图中的样子其中 行处是 。考虑这里面每一个小方块的包含关系, 的子模,要么就是 要么是 ,而竖向的商同理,从而如果左下不等于右上,则小方块里要么四个商都非零,横向两个商相等且竖向两个商相等,要么两个是 两个不是(并且只能是左下两个商是 ,考虑到 的子模)且右上两个商相等现在考虑按图中最右上和最左下两个路线得到的合成列就是 ,而我们可以一个小方块一个小方块地把右上一路换到左下,这个过程每一步都不影响合成列中某个单模出现的数量。

假设有正合列 ,如果 长度有限,则 长度有限,且长度等于 的长度之和

Artin环

Reading: Section 2.4
Exercises: 2.6, 2.22 (this one is a bit tricky)

某种意义上Artin环是有限维线性空间的推广。

下列条件等价:
(i) 诺特且 是极大理想的乘积
(ii) 诺特且素理想皆极大(也就是 零维)
(iii) 长度有限
(iv) 是Artin环

(i)(ii): ,于是某个 包含于
(ii)(iii):假设 长度不有限,取极大的使 长度不有限的理想 ,先证明 素理想。记 ,假若 非零,则 长度有限,且乘 自然给出满射 ,由于满射所以 也长度有限,从而由正合列 长度有限,矛盾,故 之一为零,即 素理想,从而 是极大理想, 是单模,矛盾。
(iii)(iv):已经证明。
(iv)(i):首先证明 是极大理想的乘积。取极大理想的所有乘积中极小的 ,则 对任意极大理想 成立,从而由于 是极大理想的乘积, 。如果 ,则可以取极小的使 ,那么对某个 ,于是按 极小性 。同时 给出 ,从而 对某个 ,也就是 。而 包含于一切极大理想中(否则 于是 真包含于 ),故 不在任何极大理想中从而可逆, ,矛盾,于是知

现在证明 诺特。设 ,考虑这里每个 都是 -线性空间,且由Artin条件有限维,从而作为 -模长度有限。每个因子都长度有限意味着 长度有限,从而诺特。

注: 一般不同构于 ,事实上一般前者维数大于1,比如说考虑 ,则 是一维 -线性空间,而 二维(有基 )。

Artin环只有有限多极大理想,且是Artin局部环的乘积

考虑 ,按中国剩余定理 有唯一的素理想。

Artin环的素谱是有限集的离散拓扑,极大理想给出其中的所有点

注:若诺特环的 是有限集的离散拓扑,则可以证明它Artin(显然素理想皆极大),如果没有诺特的条件则不然

考虑环 ,它有唯一的素理想 (因为 从而 ),但它不诺特(从而不Artin)。

Artin环皆长度有限,所以可以按照长度来分类。长度 的Artin环只有零环,长度 的Artin环都是域。长度 时情况开始变得有趣。我们可以举出来一些例子:令 ,考虑 是一个二次多项式,如果 ,则 ,如果 有重根则相当于 这些都是长度 的情况,而 不可约时则 是域长度 。当然也有 -线性空间的例子,比如说

长度 的情况也类似,比如说 也可以是 。对长度 的情况,考虑 具有 具有 ,平方是 的映射,后者 所以同构于 ,某种意义上这相当于在其中编码了一个二次型。长度 的情况则更复杂,取某个 ,相当于要分类 中的幂零元。幂零的数学对象,像是Artin环、幂零李代数、有限 -群等等,在生成元多的时候会变得极其复杂,比如说 阶群有 个。

Reading: Section 2.4
Exercises: 2.24
Try to classify Artinian rings of length 3 or 4 over a field. (You do not need to succeed: the point is that you see how complicated this is.)

局部化的定义

直观上, 关于子集 的局部化 就是使 中元素在 中可逆,由此出发最直接的定义是 ,其中 遍历 。这种定义可以自然地用泛性质表达:

关于乘性子集 局部化为满足如下泛性质的环 :任意交换环的同态 若满足 , 则存在唯一的环同态 使下图交换.

RAR[S¡1]''[S¡1]


这种形式上取逆的做法事实上比较非构造性,让我们对 的大小失去了控制,比如我们难以直接知道哪些 中元素会在自然映射 下变成 。如果对 ,存在 使 ,那么 会被打到 ,事实上自然映射 的核由被某个 作用得 组成。

直接考虑将 构造出来,仿照熟悉的分式环就是对 商去 当且仅当 ,但这样证明传递性时,如果 ,而 ,则 ,需要 非零因子才可以有消去律。这样 不含零因子时可以定义 ,如果 中一切非零因子的集合,则 称为 全商环(total quotient ring),它是 最大的使 仍然是其子环的局部化。

的全商环是

更进一步的,对于 有零因子的情形,令 ,则 中的像无零因子,从而可以有局部化 (注意 并不一定单射)

满足 关于 局部化的泛性质,从而

于是 中元素皆有 形式, 当且仅当 对某个 ,一般来说 当且仅当存在某个 使得 ,这就是一般局部化构造性的定义。

,则

中素理想, ,则 是乘性子集, 记作 ,称为 处的局部化。

是一切在 处有定义的有理函数。

Reading: Section 2.1
Exercises: 2.1, 2.7

局部化的

如果 的理想, 是自然的映射,则 (这里 表示理想的收缩 表示理想的扩张 ),于是 是单射

注意到若 ,则 ,从而

如果 诺特,则 诺特

可以被嵌入

某种意义上可以将 中元素看作函数,作为 中余维数为 的“点”,其零点就是 ,其中 ,那么自然 就是 中去除这些点事实上

同构于 中与 不交的素理想组成的子空间

首先 中理想的收缩一定与 不交。反过来如果 中与 不交的素理想,则只需证明 ,而注意到因为素理想而且与 不交, 之后一切显然。

如果 有限生成,则 的开子集

一般来说 是无穷多开集的交,并非开集,但实际和开集的行为会比较像。

中素理想有 不可约)、 三类,它的素谱在上一章3.10已经有过可视化。关于 处局部化 中只有一般点 ,而 则是 对应“一维点”加上一般点,至于 则是点 加上过这点的曲线和一般点注意素理想局部化的素谱和商环的素谱大相径庭,譬如说 的素谱就是 则是 曲线带上其上的这些红点, 就是单点。总体来说,一般直观上商环 的素谱是 以及 “内部”的所有点,而局部化 则是 和在 附近外部的点,在这种意义上商和局部化是相反的操作。

一般来讲, ,把 变成最小的理想,素谱的一般点。而 ,把 变成最大的理想,变成素谱中唯一的闭点。

考虑 处的局部化,它的素谱中有三个点

Reading: Section 2.1
Exercises: 2.10

上的函数

对紧Hausdorff空间 ,我们熟知 ,而 这元素皆为 上的函数,于是也就是 上的函数。类似地对一般的环 ,也有类似的将 视作 上函数的观点。

中极大理想形如 中函数在 处取值于实数,也就是 。对一般的环,则 处的取值应在 中。

,则非零理想都形如 处的取值就是

就具有如下函数图像

但这种函数化会出现一个问题,就是 到函数的映射并不一定是单射。事实上如果 对应的函数是 ,也就是 属于一切 ,也就是 (由上节引理5.6,对任何乘性子集 ,如果 与理想 不交,则存在素理想 不交,然后取 )。

事实上我们有更好的方法来表示出这样的函数,具体来说是使 处在局部化环 中取值。注意到 中的像是 当且仅当存在 ,于是 对应的函数是 的当且仅当存在可逆元杀掉 ,也就是 。现在 对应的函数在 处取值于 ,有时也可以进一步考虑 (如果没用幂零元?),不过一般还是考虑局部环

对开集 ,令 表示 上全体连续函数组成集合,则它具有以下性质:
(i):如果 ,则有函子性(也就是保持自然含入映射的复合,但是反向)的限制映射
(ii)(预层性质):如果 在一切 上的限制是 ,则
(iii)(层性质): 如果 ,有一族连续函数 上的限制相同,则存在 上的限制是

我们希望对任意的环 定义 。事实证明在处理具体问题时,几乎所有问题中我们都只需要考虑 ,所以实际上我们只需要考虑这些基本开集。

直观上来说, 的“零点” 是一个超曲面,于是 就是余维数 的集合(直观上讲就是 不为零的点之集合),而对在 上的“好函数”,首先 中的函数都一定可以,其次因为 上“不消失”,所以 也行,于是遂把 定义为

Exercise: 2.6
Exercises: Suppose R is the ring of continuous real functions on the circle. Is the natural map from R to the localization at a maximal ideal injective? What if R is the ring of smooth functions on the circle? What if R is the ring of analytic functions on the circle?

仿射概形

某种意义上仿射概形的观点在于将 看作 上的函数环。在此前我们给每个 定义了一个环 ,现在我们来说明这种定义确实使 "表现得和 上函数环一样",也就是它满足限制性质、预层性质和层性质。

具体来说 (1) 对含入映射(对应函数的限制) 有自然的映射 ,并且显然满足函子性。

  1. 假设 覆盖, 在一切 上限制为 ,不妨将 替换 ,且设 ,那么诸 覆盖 ,也就是没有素理想(极大理想)包含一切 ,因此有有限多个 生成 ,也就是 ,考虑它的幂次知 也是 ,而 中为零等于说 ,从而即知

  2. 这里只考虑 是整环的情形,虽然说非整环情况下结论也正确。如果 ,对每个 给定了 ,且在 相同。这里依然将 替换为 并设 ,从而诸 覆盖 ,有 ,并且可以将 替换为 ,于是要寻找某个 在一切 上为 变成要找某个 ,在一切 上为 ,也就是 。如果我们找到了这样的 ,那么 ,事实上对 ,由于 ,有 ,因而

和相应配套的层 定义了 仿射概形。这种几何语言和交换环本身的代数语言之间具有一些对偶关系,具体来说

下面是一些基本例子

Exercise: 2.19, 2.26
Exercise for the ambitious: Check the sheaf property discussed in the lecture for rings with zero divisors. (This is tricky.)

Matplotlib大量使用numpy,所以两者经常被一同import

1
2
import numpy as np
import matplotlib.pyplot as plt

Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API,能很方便让用户绘制 2D 图表。

IPython(从而Juypter Notebook)有一组预先定义好的所谓的魔法函数(Magic Functions),你可以通过命令行的语法形式来访问它们,例如%matplotlib inline可以省略掉matplotlib.pyplot.show()

Matplotlib同时支持命令式编程(作用于最近的图表或轴)和面向对象编程,推荐使用后者。

Matplotlib中定义了Figure容器

1
class matplotlib.figure.Figure(figsize=None, dpi=None, *, facecolor=None, edgecolor=None, linewidth=0.0, frameon=None, subplotpars=None, tight_layout=None, constrained_layout=None, layout=None, **kwargs)

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, *, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)返回一个Figure对象。

num为int或str,为图形的唯一标识符。figsize是(float, float)形式的tuple,表示宽度和长度,单位英寸,默认[6.4, 4.8]

Axes是一个矩形区域,这个矩形是基于figure坐标系统定义的。Axes也是matplotlib框架中一个重要的类对象,但首先要把它理解为figure中的一个子矩形区域。

Figure.add_axes(rect, projection=None, polar=False, **kwargs)返回向Figure中添加新的轴的Axes对象。rect为(left, bottom, width, height)形式元组,(left, bottom)表示添加的子区域左下角坐标,width和height为子区域宽度长度,它们都以在Figure宽度和高度中的占比表示。

Figure.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, width_ratios=None, height_ratios=None, subplot_kw=None, gridspec_kw=None)向Figure添加一组子图,形如nrows×cols的矩形排布,返回一个figure和Axes。

Axes中有许多绘图的函数:

plot([x], y, [fmt], *, data=None, **kwargs)plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs) 用于用于绘制线图和散点图。向 plot 提供单个列表或数组,matplotlib 会假设它是一系列 y 值,并自动生成 x 值。接受两个数组时则会将前者作为x后者作为y绘图。fmt为string类型可选项,可以有color, marker, linestyle, linewidth, markersize。具体的功用如下:
Color为颜色
| Character | Color |
|-----------|----------|
| 'b' | Blue |
| 'g' | Green |
| 'r' | Red |
| 'c' | Cyan |
| 'm' | Magenta |
| 'y' | Yellow |
| 'k' | Black |
| 'w' | White |

marker为图中点的标记
| Character | Description |
|-----------|-----------------|
| '.' | Point marker |
| 'O' | Circle marker |
| 'x' | X marker |
| 'D' | Diamond marker |
| 'H' | Hexagon marker |
| 's' | Square marker |
| '+' | Plus marker |

linestyle为直线形式
| Character | Description |
|-----------|------------------|
| '-' | Solid line |
| '--' | Dashed line |
| '.' | Dash-dot line |
| ':' | Dotted line |

在函数调用里写ax.plot(drug_conc, response, color='r', marker='o', linestyle='-.')和写ax.plot(drug_conc, response, 'ro-.')有相同效果。

类似地还有:

scatter():用于绘制散点图
bar()/Barh():用于绘制垂直/水平条形图和水平条形图
hist():用于绘制直方图
pie():用于绘制饼图
imshow():用于绘制图像
例如

1
2
3
4
5
6
7
8
9
10
11
names = ['group_a', 'group_b', 'group_c']
values = [1, 10, 100]
plt.figure(figsize=(9, 3))
plt.subplot(131)
plt.bar(names, values)
plt.subplot(132)
plt.scatter(names, values)
plt.subplot(133)
plt.plot(names, values)
plt.suptitle('Categorical Plotting')
plt.show()

会产生

ax.set_title (label, fontdict=None, loc=None, pad=None, y=None)可以给Axes对象设置标题。label是string,用于作为标题的文本。fontdict是一个dict,包括'fontsize’ 'fontweight’, 'color’等控制标题性质的关键字。loc可以是{'center', 'left', 'right’}中一个。y和pad都是为浮点数。y表示标题的垂直轴位置(1.0为顶部)。如果None(默认值),则自动确定y以避免轴上的装饰符。pad是标题与坐标轴顶部的偏移量,以点为单位。

ax.set_xlabel(xlabel, fontdict=None, labelpad=None, loc=None)ax.set_ylabel(ylabel, fontdict=None, labelpad=None, loc=None)分别用于设置x轴和y轴的标签。loc在 {'bottom', 'center', 'top’}/{'center', 'left', 'right’}中。

ax.set_xticks(ticks)ax.set_yticks(ticks)可以设置x/y轴的刻度位置。ticks为float的list,包括诸刻度的位置。

ax.set_xticklabels(labels, fontdict=None)ax.set_yticklabels(labels, fontdict=None)可以设置x/y轴的刻度标签,labels为string的list。

ax.set_xlim( left=None, right=None)ax.set_ylim( left=None, right=None)可以设置x/y轴的视图限制。

ax.set_facecolor(color)设置图表空白的颜色。

ax.set_frame_on(b)按布尔值b确定是否设置图表矩形边框。

ax.grid(b=None, axis='both’)设置网格线,axis可以为{'both', 'x', 'y'}中一个,表示某轴是否设置网格线。

Spiness是Axes的四个边框线,可以用ax.spines['right']ax.spines['left']ax.spines['top']ax.spines['bottom']访问。

spine.set_color()可以设置颜色(None则不显示)。spine.set_linewidth()设置宽度。

ax.legend(labels, loc, fontsize, title, frameon…)在Axes对象中放图例。labels是str的list,是每条线的命名。而loc则是alt text

ax.twinx()ax.twiny()可以创建一个新的Axes,其中有一个不可见的x / y轴和一个独立的y / x轴,位于与原始轴相对的位置。

0%