学科分类
目录
数据分析

绘制常见图表

matplotlib.pyplot模块中包含了快速生成多种图表的函数,这些函数的说明具体如表6-2所示。

表1 pyplot中绘制图表的函数

函数名称 函数说明
bar 绘制条形图
barh 绘制水平条形图
hist 绘制直方图
pie 绘制饼图
specgram 绘制光谱图
stackplot 绘制堆积区域图
scatter 绘制散点图
plot 绘制折线图
boxplot 绘制箱形图

接下来,从表1中选出一些比较常用函数进行举例,为大家介绍如何使用这些函数来绘制图表,具体内容如下。

(1)绘制直方图

直方图是统计报告图的一种,它由一系列高度不等的纵向条纹或线段来表示数据的分布情况,一般用横轴表示数据所属的类别,用纵轴表示数量或占比。

pyplot模块的hist()函数用于绘制直方图,其语法格式如下:

matplotlib.pyplot.hist(x,bins = None,range = None,density = None,weights = None,
                       cumulative = False,bottom = None,histtype ='bar',align ='mid',
                       orientation ='vertical',rwidth = None,log = False,color = None,
                       label = None,stacked = False,normed = None,hold = None,
                       data = None,** kwargs)

上述函数中常用参数表示的含义如下:

(1) x:表示输入值,可以是单个数组,或者不需要相同长度的数组序列。

(2) bins:表示绘制条柱的个数。若给定一个整数,则返回“bins+1”个条柱,默认为10。

(3) range:bins的上下范围(最大和最小值)。

(4) color:表示条柱的颜色,默认为None。

通过hist()函数绘制直方图的示例如下。

In [9]: arr_random = np.random.randn(100)            # 创建随机数组
        plt.hist(arr_random, bins=8, color='g', alpha=0.7) # 绘制直方图
        plt.show() # 显示图形

上述示例中,首先创建了一个包含100个随机数的数组,用来表示绘制图形使用的数据,接着调用hist()函数绘制一个直方图,这个直方图共有8个条柱,每个条柱的颜色为绿色,透明度alpha为0.7,最后调用show()函数显示图形。

运行结果如图1所示。

F3bavnvRQLVsjaYftPVrYGdmW5LeDvgjfFAWAIthDB4AiCDoAFEHQAaAIgg4ARRB0ACiCoANAEQQdAIog6ABQxP8BUt+Ji5n2b2gAAAAASUVORK5CYII=

图1 运行结果

(2)绘制散点图

散点图以某个特征为横坐标,以另外一个特征为纵坐标,通过散点的疏密程度和变化趋势表示两个特征的数量关系。

pyplot模块中的scatter()函数用于绘制散点图,其语法格式如下:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None,
                          vmin=None, vmax=None, alpha=None, linewidths=None, verts=None,
                          edgecolors=None, hold=None, data=None, **kwargs)

上述函数中常用参数表示的含义如下:

(1) x, y:表示x轴和y轴对应的数据。

(2) s:指定点的大小。若传入的是一维数组,则表示每个点的大小。

(3) c:指定散点的颜色,若传入的是一维数组,则表示每个点的颜色。

(4) marker:表示绘制的散点类型。

(5) alpha:表示点的透明度,接收0~1之间的小数。

通过scatter()函数绘制散点图的示例如下。

In [10]:# 创建包含整数0~50的数组,用于表示x轴的数据
        x = np.arange(51)
        # 创建另一数组,用于表示y轴的数据
        y = np.random.rand(51) * 10
        plt.scatter(x, y)  # 绘制散点图
        plt.show()

上述示例中,首先创建了一个包含整数0~50的数组,这些数值将作为散点图中x轴对应的数据,数组乘以10的结果将作为y轴对应的数据,然后调用scatter()函数绘制一个散点图,最后调用show()函数显示图形。

运行结果如图2所示。

img

图2 运行结果

(3)绘制柱状图

柱状图是一种以长方形的长度为变量表达图形的统计报告图,它由一系列高度不等的纵向条纹表示数据分布的情况。

pyplot模块中用于绘制柱状图的函数为bar(),其语法格式如下:

bar(x, height, width, *, align='center', **kwargs)

上述函数中常用参数表示的含义如下:

(1) x:表示x轴的数据。

(2) height:表示条形的高度。

(3) width:表示条形的宽度,默认为0.8。

(4) color:表示条形的颜色。

(5) edgecolor:表示条形边框的颜色。

通过bar()函数绘制柱状图的示例如下。

In [11]:# 创建包含0~4的一维数组
        x = np.arange(5)
        # 从上下限范围内随机选取整数,创建两个25列的数组
        y1, y2 = np.random.randint(1, 31, size=(2, 5))
        width = 0.25                # 条形的宽度
        ax = plt.subplot(1, 1, 1)        # 创建一个子图
        ax.bar(x, y1, width, color='r')     # 绘制红色的柱形图
        ax.bar(x+width, y2, width, color='g') # 绘制另一个绿色的柱形图
        ax.set_xticks(x+width)          # 设置x轴的刻度
        # 设置x轴的刻度标签
        ax.set_xticklabels(['January', 'February', 'March', 'April ', 'May ']) 
        plt.show()                  # 显示图形

在上述示例中,首先创建了包含整数0~4的数组,将其作为x轴的数据,接着又创建了两个2行5列的二维数组,这些数组的数据是从1~30内随机选取的整数,然后在指定编号为1的子图上,调用bar()函数绘制了两个柱形图,其中,第一个柱形图的x、y轴使用的数据为x和y1,颜色为红色,第二个柱形图的x、y轴使用的数据为x+width和y2,颜色为绿色,最后设置了x轴的刻度标签为“January、February、March、April 、May ”,并显示了画好的图形。

运行结果如图3所示。

img

图3 运行结果

多学一招:颜色、线型、标记的设置

在使用绘制图表的函数(比如plot、scatter等)画图时,可以设定线条的相关参数,包括颜色、线型和标记风格。其中,线条颜色使用color参数控制,线型使用linestyle参数控制,而标记风格使用marker参数控制。下面来列举每个参数所支持的取值。

color参数支持如表2中所列举的颜色值。

表2 color参数支持的颜色值

颜色值 说明
b(blue) 蓝色
g(green) 绿色
r(red) 红色
c(cyan) 青色
m(magenta) 品红
y(yellow) 黄色
k(black) 黑色
w(white) 白色

linestyle参数的取值与意义如表3所示。

表3 linestyle参数支持的样式值

颜色值 说明
‘-’ 实线
‘--’ 长虚线
‘-.’ 短点相间线
‘:’ 短虚线

marker参数的取值与意义如表4所示。

表4 marker参数支持的标记值

颜色值 说明
‘o’ 实心圆圈
‘D’ 菱形
‘h’ 六边形1
‘H’ 六边形2
‘8’ 八边形
‘p’ 五边形
‘+’ 加号
‘.’
‘s’ 正方形
‘*’ 星形
‘v’ 倒三角形
‘^’ 正三角形
‘>’ 一角朝右的三角形
‘<’ 一角朝左的三角形

接下来,通过一个简单的示例程序来演示如何给折线图设置颜色、线型和标记风格,具体代码如下。

In [12]:data = np.arange(1, 3, 0.3)
        # 绘制直线,颜色为青色,标记为“x”,线型为长虚线
        plt.plot(data, color="c", marker="x", linestyle="--")
        # 绘制直线,颜色为品红,标记为实心圆圈,线型为短虚线
        plt.plot(data+1, color="m", marker="o", linestyle=":")
        # 绘制直线,颜色为黑色,标记为五边形,线型为短点相间线
        plt.plot(data+2, color="k", marker="p", linestyle="-.")
        # 也可采用下面的方式绘制三条不同颜色、标记和线型的直线
        # plt.plot(data, 'cx--', data+1, 'mo:', data+2, 'kp-.')
        plt.show()

运行结果如图4所示。

img

图4 运行结果

点击此处
隐藏目录