信息可视化(也叫绘图)是数据分析中最重要的工作之一。它可能是探索过程的一部分,例如,帮助我们找出异常值、必要的数据转换、得出有关模型的idea等。另外,做一个可交互的数据可视化也许是工作的最终目标。Python有许多库进行静态或动态的数据可视化,但我这里重要关注于matplotlib(http://matplotlib.org/)和基于它的库。
打开cmd,输入pip install matplotlib pip install numpy
输入pip list, 显示如下图,即为安装成功
1.2、调用matplotlib与numpy库
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
from numpy.random import randn
matplotlib的图像都位于Figure对象中。可以用plt.figure创建一个新的Figure:
fig = plt.figure()
不能通过空Figure绘图。必须用add_subplot创建一个或多个subplot才行:
fig1 = fig.add_subplot(2, 2, 1)
此行代码的意思是:创建一个2x2的图,且目前选中的是4个subplot中的第一个,创建另外两个subplot
fig2 = fig.add_subplot(2, 2, 2)
fig3 = fig.add_subplot(2, 2, 3)
如果此时执行绘图命令,matplotlib就会在最后一个用过的subplot(如果没有则创建一个)上进行绘制
有时需要加一行代码使得图像显现出来
2.2、调整subplot周围的间距
利用Figure的subplots_adjust方法可以轻而易举地修改间距,wspace和hspace用于控制宽度和高度的百分比,可以用作subplot之间的间距
subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
matplotlib的plot函数接受一组X和Y坐标,还可以接受一个表示颜色和线型的字符串缩写。
常用的颜色可以使用颜色缩写,也可以指定颜色码(例如,'#CECECE')。你可以通过查看plot的文档字符串查看所有线型的合集(在IPython和Jupyter中使用plot?)。
线图可以使用标记强调数据点。因为matplotlib可以创建连续线图,在点之间进行插值,因此有时可能不太容易看出真实数据点的位置。标记也可以放到格式字符串中,但标记类型和线型必须放在颜色后面。代码如下:
ax1.plot(randn(50).cumsum(), 'k--')
ax2.plot(randn(20).cumsum(),linestyle = 'dotted',color = 'b' )
ax3.plot(range(50), randn(50), linestyle='--', color='g')
运行结果如下:
要改变x轴刻度,最简单的办法是使用set_xticks和set_xticklabels。前者告诉matplotlib要将刻度放在数据范围中的哪些位置,默认情况下,这些位置也就是刻度标签。但我们可以通过set_xticklabels将任何其他的值用作标签:
##绘制随机漫步函数
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(randn(1000).cumsum())
##设置x轴标签、倾斜角度与大小写
ticks = ax.set_xticks([0, 250, 500, 750, 1000])
labels = ax.set_xticklabels(['one', 'two', 'three', 'four', 'five'],
rotation=30, fontsize='small')
结果如下所示:
Y轴的修改方式与此类似,只需将上述代码中的x替换为y即可
4.2添加图例
图例(legend)是另一种用于标识图表元素的重要工具。添加图例的方式有多种。最简单的是在添加subplot的时候传入label参数:
fig = plt.figure(); ax = fig.add_subplot(1, 1, 1)
ax.plot(randn(1000).cumsum(), 'k', label='one')
可以调用ax.legend()或plt.legend()来自动创建图例,结果如下图所示:
ax.legend(loc='best')
legend方法有几个其它的loc位置参数选项。请查看文档字符串(使用ax.legend?)。
loc告诉matplotlib要将图例放在何位置,除非指定位置,通常使用best。
小白一枚,日更 python学习日记,欢迎大家一起交流。本人所学参考书为:GitHub - iamseancheney/python_for_data_analysis_2nd_chinese_version: 《利用Python进行数据分析·第2版》