Python学习笔记(5)--matplotlib数据可视化
(2018-08-08 18:15:10)
标签:
python |
分类: Python学习笔记 |
Matplotlib是Python最著名的数据可视化工具包,有了它,一些统计上常用的图形如折线图、散点图、直方图等都可以用简单的几行Python代码实现。
而Pyplot是Matplotlib里用的最多的工具,他有2个最常用的场景,一个是画点,一个是画线。
#导入pyplot包,并简写为plt
import matplotlib.pyplot as plt
matplotlib.pyplot
1.plt.show() 函数:
默认情况下,matplotlib.pyplot
plt.show()
2.plt.plot() 函数
默认参数:plt.plot(x,y)
指定参数:plt.plot(x,y, format_str)
默认参数:x
指定参数:x
字符参数
表示颜色的字符参数有:
字符 |
颜色 |
‘b’ |
蓝色,blue |
‘g’ |
绿色,green |
‘r’ |
红色,red |
‘c’ |
青色,cyan |
‘m’ |
品红,magenta |
‘y’ |
黄色,yellow |
‘k’ |
黑色,black |
‘w’ |
白色,white |
表示类型的字符参数有:
字符 |
类型 |
字符 |
类型 |
'-' |
实线 |
'--' |
虚线 |
'-.' |
虚点线 |
':' |
点线 |
'.' |
点 |
',' |
像素点 |
'o' |
圆点 |
'v' |
下三角点 |
'^' |
上三角点 |
'<' |
左三角点 |
'>' |
右三角点 |
'1' |
下三叉点 |
'2' |
上三叉点 |
'3' |
左三叉点 |
'4' |
右三叉点 |
's' |
正方点 |
'p' |
五角点 |
'*' |
星形点 |
'h' |
六边形点1 |
'H' |
六边形点2 |
'+' |
加号点 |
'x' |
乘号点 |
'D' |
实心菱形点 |
'd' |
瘦菱形点 |
'_' |
横线点 |
|
|
例如我们要画出红色圆点:
plt.plot([1,2,3,4], [1,4,9,16], 'ro')
plt.show()
显示范围
这里可以使用
plt.axis([xmin, xmax, ymin, ymax])
# 指定 x 轴显示区域为 0-6,y 轴为 0-20
plt.axis([0,6,0,20])
plt.show()
传入
向
import numpy as np
import matplotlib.pyplot as plt
# evenly sampled time at 200ms intervals
t = np.arange(0., 5., 0.2)
# red dashes, blue squares and green triangles
plt.plot(t, t, 'r--',
plt.show()
传入多组数据
事实上,在上面的例子中,我们不仅仅向
线条属性
之前提到,我们可以用字符串来控制线条的属性,事实上还可以通过关键词来改变线条的性质,例如
x = np.linspace(-np.pi,np.pi)
y = np.sin(x)
plt.plot(x, y, linewidth=2.0, color='r')
plt.show()
plt.setp() 修改线条性质
lines = plt.plot(x, y)
# 使用键值对
plt.setp(lines, color='r', linewidth=2.0)
# 或者使用 MATLAB 风格的字符串对
plt.setp(lines, 'color', 'r', 'linewidth', 2.0)
plt.show()
可以设置的属性有很多,可以使用
3. 子图
figure()
plt.figure(num)
使用
plt.subplot(numrows, numcols, fignum)
当
#将绘画框进行对象化
fig=plt.figure()
#将p1定义为绘画框的子图,211表示将绘画框划分为2行1列,最后的1表示第一幅图
p1=fig.add_subplot(211)
x=[1,2,3,4,5,6,7,8]
y=[2,1,3,5,2,6,12,7]
p1.plot(x,y)
#将p2定义为绘画框的子图,211表示将绘画框划分为2行1列,最后的2表示第二幅图
p2=fig.add_subplot(212)
a=[1,2]
b=[2,4]
p2.scatter(a,b)
plt.show()
4.图形上加上文字
plt.hist()
mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)
# the histogram of the data
n, bins, patches = plt.hist(x, 50, density=1, facecolor='g', alpha=0.75)
plt.xlabel('Smarts')
plt.ylabel('Probability')
plt.title('Histogram of IQ')
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
plt.axis([40, 160, 0, 0.03])
plt.grid(True)
plt.show()
对于这幅图形,我们使用
xlabel
ylabel
title
text
输入特殊符号支持使用
除了使用
·
·
ax = plt.subplot(111)
t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = plt.plot(t, s, lw=2)
plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
plt.ylim(-2,2)
plt.show()
5.使用 style 来配置 pyplot 风格
style
可以模仿
x = np.linspace(0, 2 * np.pi)
y = np.sin(x)
plt.style.use('ggplot')
plt.plot(x, y)
plt.show()
我们不希望改变全局的风格,只是想暂时改变一下分隔,则可以使用
with plt.style.context(('dark_background')):
plt.plot(x, y, 'r-o')
plt.show()
6. 基础文本函数
在
·
·
·
·
·
·
·
在字符串中使用一对
# math text
plt.title(r'$\alpha > \beta$')
plt.show()
使用
分数:r'$\frac{3}{4}
二项式系数:\binom{3}{4}
在 Tex
语言中,括号始终是默认的大小,如果要使括号大小与括号内部的大小对应,可以使用 \left 和 \right 选项:
r'$\left(\frac{5 - \frac{1}{x}}{4}\right)$'
根号:r'$\sqrt[3]{x}$'
7.注释
使用文本框进行注释
text() 函数接受 bbox 参数来绘制文本框。
bbox_props = dict(boxstyle="rarrow,pad=0.3", fc="cyan", ec="b", lw=2)
t = ax.text(0, 0, "Direction", ha="center", va="center", rotation=45,
size=15,
bbox=bbox_props)
可以这样来获取这个文本框,并对其参数进行修改:
bb = t.get_bbox_patch()
bb.set_boxstyle("rarrow", pad=0.6)
8. 标签
legend() 函数被用来添加图像的标签,其主要相关的属性有
legend entry - 一个 legend 包含一个或多个 entry,一个 entry 对应一个 key 和一个 label
legend key - marker 的标记
legend label - key 的说明
legend handle - 一个 entry 在图上对应的对象
调用 legend() 会自动获取当前的 Axes 对象,并且得到这些
handles
和 labels,相当于:
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles, labels)
9.3D效果
用matplotlib可以实现酷炫吊炸天的3D效果,绝对是PPT上的装逼利器。比如简单的可以画一个3D的三角形
#导入pyplot包,并简写为plt
import matplotlib.pyplot as plt
#导入3D包
from mpl_toolkits.mplot3d import Axes3D
#将绘画框进行对象化
fig = plt.figure()
#将绘画框划分为1个子图,并指定为3D图
ax = fig.add_subplot(111, projection='3d')
#定义X,Y,Z三个坐标轴的数据集
X = [1, 1, 2, 2]
Y = [3, 4, 4, 3]
Z = [1, 100, 1, 1]
#用函数填满4个点组成的三角形空间
ax.plot_trisurf(X, Y, Z)
plt.show()