01. Python 工具
02. Python 基础
03. Numpy
- Numpy 简介
- Matplotlib 基础
- Numpy 数组及其索引
- 数组类型
- 数组方法
- 数组排序
- 数组形状
- 对角线
- 数组与字符串的转换
- 数组属性方法总结
- 生成数组的函数
- 矩阵
- 一般函数
- 向量化函数
- 二元运算
- ufunc 对象
- choose 函数实现条件筛选
- 数组广播机制
- 数组读写
- 结构化数组
- 记录数组
- 内存映射
- 从 Matlab 到 Numpy
04. Scipy
05. Python 进阶
- sys 模块简介
- 与操作系统进行交互:os 模块
- CSV 文件和 csv 模块
- 正则表达式和 re 模块
- datetime 模块
- SQL 数据库
- 对象关系映射
- 函数进阶:参数传递,高阶函数,lambda 匿名函数,global 变量,递归
- 迭代器
- 生成器
- with 语句和上下文管理器
- 修饰符
- 修饰符的使用
- operator, functools, itertools, toolz, fn, funcy 模块
- 作用域
- 动态编译
06. Matplotlib
- Pyplot 教程
- 使用 style 来配置 pyplot 风格
- 处理文本(基础)
- 处理文本(数学表达式)
- 图像基础
- 注释
- 标签
- figures, subplots, axes 和 ticks 对象
- 不要迷信默认设置
- 各种绘图实例
07. 使用其他语言进行扩展
- 简介
- Python 扩展模块
- Cython:Cython 基础,将源代码转换成扩展模块
- Cython:Cython 语法,调用其他C库
- Cython:class 和 cdef class,使用 C++
- Cython:Typed memoryviews
- 生成编译注释
- ctypes
08. 面向对象编程
09. Theano 基础
- Theano 简介及其安装
- Theano 基础
- Theano 在 Windows 上的配置
- Theano 符号图结构
- Theano 配置和编译模式
- Theano 条件语句
- Theano 循环:scan(详解)
- Theano 实例:线性回归
- Theano 实例:Logistic 回归
- Theano 实例:Softmax 回归
- Theano 实例:人工神经网络
- Theano 随机数流变量
- Theano 实例:更复杂的网络
- Theano 实例:卷积神经网络
- Theano tensor 模块:基础
- Theano tensor 模块:索引
- Theano tensor 模块:操作符和逐元素操作
- Theano tensor 模块:nnet 子模块
- Theano tensor 模块:conv 子模块
10. 有趣的第三方模块
11. 有用的工具
- pprint 模块:打印 Python 对象
- pickle, cPickle 模块:序列化 Python 对象
- json 模块:处理 JSON 数据
- glob 模块:文件模式匹配
- shutil 模块:高级文件操作
- gzip, zipfile, tarfile 模块:处理压缩文件
- logging 模块:记录日志
- string 模块:字符串处理
- collections 模块:更多数据结构
- requests 模块:HTTP for Human
12. Pandas
处理文本(基础)
In [1]:
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
matplotlib
对文本的支持十分完善,包括数学公式,Unicode
文字,栅格和向量化输出,文字换行,文字旋转等一系列操作。
基础文本函数
在 matplotlib.pyplot
中,基础的文本函数如下:
text()
在Axes
对象的任意位置添加文本xlabel()
添加 x 轴标题ylabel()
添加 y 轴标题title()
给Axes
对象添加标题figtext()
在Figure
对象的任意位置添加文本suptitle()
给Figure
对象添加标题anotate()
给Axes
对象添加注释(可选择是否添加箭头标记)
In [2]:
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
%matplotlib inline
# plt.figure() 返回一个 Figure() 对象
fig = plt.figure(figsize=(12, 9))
# 设置这个 Figure 对象的标题
# 事实上,如果我们直接调用 plt.suptitle() 函数,它会自动找到当前的 Figure 对象
fig.suptitle('bold figure suptitle', fontsize=14, fontweight='bold')
# Axes 对象表示 Figure 对象中的子图
# 这里只有一幅图像,所以使用 add_subplot(111)
ax = fig.add_subplot(111)
fig.subplots_adjust(top=0.85)
# 可以直接使用 set_xxx 的方法来设置标题
ax.set_title('axes title')
# 也可以直接调用 title(),因为会自动定位到当前的 Axes 对象
# plt.title('axes title')
ax.set_xlabel('xlabel')
ax.set_ylabel('ylabel')
# 添加文本,斜体加文本框
ax.text(3, 8, 'boxed italics text in data coords', style='italic',
bbox={'facecolor':'red', 'alpha':0.5, 'pad':10})
# 数学公式,用 $$ 输入 Tex 公式
ax.text(2, 6, r'an equation: $E=mc^2$', fontsize=15)
# Unicode 支持
ax.text(3, 2, unicode('unicode: Institut f\374r Festk\366rperphysik', 'latin-1'))
# 颜色,对齐方式
ax.text(0.95, 0.01, 'colored text in axes coords',
verticalalignment='bottom', horizontalalignment='right',
transform=ax.transAxes,
color='green', fontsize=15)
# 注释文本和箭头
ax.plot([2], [1], 'o')
ax.annotate('annotate', xy=(2, 1), xytext=(3, 4),
arrowprops=dict(facecolor='black', shrink=0.05))
# 设置显示范围
ax.axis([0, 10, 0, 10])
plt.show()
https://www.wenjiangs.com/wp-content/uploads/2022/docimg20/wfmdNxzYQrtZnVuK-2aj13s.png alt="">
文本属性和布局
我们可以通过下列关键词,在文本函数中设置文本的属性:
关键词 | 值 |
---|---|
alpha | float |
backgroundcolor | any matplotlib color |
bbox | rectangle prop dict plus key 'pad' which is a pad in points |
clip_box | a matplotlib.transform.Bbox instance |
clip_on | [True , False] |
clip_path | a Path instance and a Transform instance, a Patch |
color | any matplotlib color |
family | [ 'serif' , 'sans-serif' , 'cursive' , 'fantasy' , 'monospace' ] |
fontproperties | a matplotlib.font_manager.FontProperties instance |
horizontalalignment or ha | [ 'center' , 'right' , 'left' ] |
label | any string |
linespacing | float |
multialignment | ['left' , 'right' , 'center' ] |
name or fontname | string e.g., ['Sans' , 'Courier' , 'Helvetica' ...] |
picker | [None,float,boolean,callable] |
position | (x,y) |
rotation | [ angle in degrees 'vertical' , 'horizontal' |
size or fontsize | [ size in points , relative size, e.g., 'smaller' , 'x-large' ] |
style or fontstyle | [ 'normal' , 'italic' , 'oblique' ] |
text | string or anything printable with '%s' conversion |
transform | a matplotlib.transform transformation instance |
variant | [ 'normal' , 'small-caps' ] |
verticalalignment or va | [ 'center' , 'top' , 'bottom' , 'baseline' ] |
visible | [True , False] |
weight or fontweight | [ 'normal' , 'bold' , 'heavy' , 'light' , 'ultrabold' , 'ultralight' ] |
x | float |
y | float |
zorder | any number |
其中 va
, ha
, multialignment
可以用来控制布局。
horizontalalignment
orha
:x 位置参数表示的位置verticalalignment
orva
:y 位置参数表示的位置multialignment
:多行位置控制
In [3]:
import matplotlib.pyplot as plt
import matplotlib.patches as patches
# build a rectangle in axes coords
left, width = .25, .5
bottom, height = .25, .5
right = left + width
top = bottom + height
fig = plt.figure(figsize=(10,7))
ax = fig.add_axes([0,0,1,1])
# axes coordinates are 0,0 is bottom left and 1,1 is upper right
p = patches.Rectangle(
(left, bottom), width, height,
fill=False, transform=ax.transAxes, clip_on=False
)
ax.add_patch(p)
ax.text(left, bottom, 'left top',
horizontalalignment='left',
verticalalignment='top',
transform=ax.transAxes,
size='xx-large')
ax.text(left, bottom, 'left bottom',
horizontalalignment='left',
verticalalignment='bottom',
transform=ax.transAxes,
size='xx-large')
ax.text(right, top, 'right bottom',
horizontalalignment='right',
verticalalignment='bottom',
transform=ax.transAxes,
size='xx-large')
ax.text(right, top, 'right top',
horizontalalignment='right',
verticalalignment='top',
transform=ax.transAxes,
size='xx-large')
ax.text(right, bottom, 'center top',
horizontalalignment='center',
verticalalignment='top',
transform=ax.transAxes,
size='xx-large')
ax.text(left, 0.5*(bottom+top), 'right center',
horizontalalignment='right',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes,
size='xx-large')
ax.text(left, 0.5*(bottom+top), 'left center',
horizontalalignment='left',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes,
size='xx-large')
ax.text(0.5*(left+right), 0.5*(bottom+top), 'middle',
horizontalalignment='center',
verticalalignment='center',
fontsize=20, color='red',
transform=ax.transAxes)
ax.text(right, 0.5*(bottom+top), 'centered',
horizontalalignment='center',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes,
size='xx-large')
ax.text(left, top, 'rotated\nwith newlines',
horizontalalignment='center',
verticalalignment='center',
rotation=45,
transform=ax.transAxes,
size='xx-large')
ax.set_axis_off()
plt.show()
https://www.wenjiangs.com/wp-content/uploads/2022/docimg20/1VTRXG2N30KskneC-8781DP.png alt="">
注释文本
text()
函数在 Axes 对象的指定位置添加文本,而 annotate()
则是对某一点添加注释文本,需要考虑两个位置:一是注释点的坐标 xy
,二是注释文本的位置坐标 xytext
:
In [4]:
fig = plt.figure()
ax = fig.add_subplot(111)
t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = ax.plot(t, s, lw=2)
ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
arrowprops=dict(facecolor='black', shrink=0.05),
)
ax.set_ylim(-2,2)
plt.show()
https://www.wenjiangs.com/wp-content/uploads/2022/docimg20/cxhKy3tirmbhg10h-UHToCe.png alt="">
在上面的例子中,两个左边使用的都是原始数据的坐标系,不过我们还可以通过 xycoords
和 textcoords
来设置坐标系(默认是 'data'
):
参数 | 坐标系 |
---|---|
‘figure points’ | points from the lower left corner of the figure |
‘figure pixels’ | pixels from the lower left corner of the figure |
‘figure fraction’ | 0,0 is lower left of figure and 1,1 is upper right |
‘axes points’ | points from lower left corner of axes |
‘axes pixels’ | pixels from lower left corner of axes |
‘axes fraction’ | 0,0 is lower left of axes and 1,1 is upper right |
‘data’ | use the axes data coordinate system |
使用一个不同的坐标系:
In [5]:
fig = plt.figure()
ax = fig.add_subplot(111)
t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = ax.plot(t, s, lw=2)
ax.annotate('local max', xy=(3, 1), xycoords='data',
xytext=(0.8, 0.95), textcoords='axes fraction',
arrowprops=dict(facecolor='black', shrink=0.05),
horizontalalignment='right', verticalalignment='top',
)
ax.set_ylim(-2,2)
plt.show()
https://www.wenjiangs.com/wp-content/uploads/2022/docimg20/fE0Qe3Mfbo0rRhxn-r5SPCK.png alt="">
极坐标系注释文本
产生极坐标系需要在 subplot
的参数中设置 polar=True
:
In [6]:
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
r = np.arange(0,1,0.001)
theta = 2*2*np.pi*r
line, = ax.plot(theta, r, color='#ee8d18', lw=3)
ind = 800
thisr, thistheta = r[ind], theta[ind]
ax.plot([thistheta], [thisr], 'o')
ax.annotate('a polar annotation',
xy=(thistheta, thisr), # theta, radius
xytext=(0.05, 0.05), # fraction, fraction
textcoords='figure fraction',
arrowprops=dict(facecolor='black', shrink=0.05),
horizontalalignment='left',
verticalalignment='bottom',
)
plt.show()
https://www.wenjiangs.com/wp-content/uploads/2022/docimg20/FslhwEkpfixKCMni-gBUrmm.png alt="">
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论