Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。这里将会探索 matplotlib 的常见用法。
如果某天你发现自己要学习 Matplotlib, 很可能是因为:
所以就找到了 Matplotlib. 它能帮你画出美丽的:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PR87pg2V-1584458424905)(数据可视化,看这一篇就够了/image-20200315143859501.png)]
打开 Terminal 窗口, 输入以下内容
# python 3+ 请复制以下在 terminal 中执行
$ pip3 install matplotlib
# python 2+ 请复制以下在 terminal 中执行
$ pip install matplotlib
使用import
导入模块matplotlib.pyplot
,并简写成plt
使用import
导入模块numpy
,并简写成np
import matplotlib.pyplot as plt
定义数据
squares = [1, 5, 8, 10, 15]
使用plt.figure
定义一个图像窗口. 使用plt.plot
画(x
,y
)曲线. 使用plt.show
显示图像.
plt.plot(squares)
plt.show()
import matplotlib.pyplot as plt
squares = [1, 2, 4, 5, 8]
plt.plot(squares)
# 设置图标标题,并给坐标轴加上标签
plt.title("Hello line chart", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both',labelsize=14)
plt.show()
matplotlib 的 figure 就是一个 单独的 figure 小窗口, 小窗口里面还可以有更多的小图片.
使用import
导入模块matplotlib.pyplot
,并简写成plt
使用import
导入模块numpy
,并简写成np
import matplotlib.pyplot as plt
import numpy as np
使用np.linspace
定义x:范围是(-3,3);个数是50. 仿真一维数据组(x
,y1
)表示曲线1. 仿真一维数据组(x
,y2
)表示曲线2.
x = np.linspace(-3, 3, 50)
y1 = 2*x + 1
y2 = x**2
使用plt.figure
定义一个图像窗口. 使用plt.plot
画(x
,y1
)曲线.
plt.figure()
plt.plot(x, y1)
plt.show()
使用plt.figure
定义一个图像窗口:编号为3;大小为(8, 5). 使用plt.plot
画(x
,y2
)曲线. 使用plt.plot
画(x
,y1
)曲线,曲线的颜色属性(color
)为红色;曲线的宽度(linewidth
)为1.0;曲线的类型(linestyle
)为虚线. 使用plt.show
显示图像.
向上向下分别生成12个数据,X为 0 到 11 的整数 ,Y是相应的均匀分布的随机数据。 使用的函数是plt.bar
,参数为X和Y:
import matplotlib.pyplot as plt
import numpy as np
n = 12
X = np.arange(n)
Y1 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)
Y2 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)
plt.bar(X, +Y1)
plt.bar(X, -Y2)
plt.xlim(-.5, n)
plt.xticks(())
plt.ylim(-1.25, 1.25)
plt.yticks(())
plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
plt.show()
这样我们就生成了下图所示的柱状图基本框架:
使用scatter()绘制散点图并设置其样式
import matplotlib.pyplot as plt
import matplotlib as mpl
# 解决中文乱码问题
# 用来正常显示负号
mpl.rcParams['axes.unicode_minus'] = False
plt.scatter(-5, 8, s=200)
# 设置图表标题并给坐标轴加上标签
plt.title(u"单点散点图", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=14)
plt.show()
import matplotlib.pyplot as plt
#
x_value = [1, 2, 3, 4, 5]
y_value = [1, 2, 4, 5, 8]
plt.scatter(x_value, y_value, s=100)
plt.show()
首先,先引入matplotlib.pyplot
简写作plt
,再引入模块numpy
用来产生一些随机数据。生成1024个呈标准正态分布的二维数据组 (平均数是0,方差为1) 作为一个数据集,并图像化这个数据集。每一个点的颜色值用T
来表示:
import matplotlib.pyplot as plt
import numpy as np
n = 1024 # data size
X = np.random.normal(0, 1, n) # 每一个点的X值
Y = np.random.normal(0, 1, n) # 每一个点的Y值
T = np.arctan2(Y,X) # for color value
数据集生成完毕,现在来用scatter
plot这个点集,鼠标点上去,可以看到这个函数的各个parameter的描述
输入X
和Y
作为location,size=75
,颜色为T
,color map
用默认值,透明度alpha
为 50%。 x轴显示范围定位(-1.5,1.5),并用xtick()
函数来隐藏x坐标轴,y轴同理:
plt.scatter(X, Y, s=75, c=T, alpha=.5)
plt.xlim(-1.5, 1.5)
plt.xticks(()) # ignore xticks
plt.ylim(-1.5, 1.5)
plt.yticks(()) # ignore yticks
plt.show()