数据可视化——Matplotlib(1)

导入相关模块

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

基本图表

散点图:scatter

N = 1000
x = np.random.randn(N)
y = np.random.randn(N)
plt.scatter(x,y)
plt.show()

scatter的函数签名如下

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)
  • x,y:形如shape(n,)的数组
  • s:点的大小,默认20
  • c:点的取色序列,默认蓝色
  • marker:点的形状,默认是圆(具体的点的形状可以在matplotlib的官网中搜索markers查看。)
  • alpha:点的透明度
  • edgecolors:边缘颜色
plt.scatter(x,y,c='rykgm',s=100,marker='>')
plt.show()

plt.scatter(x,y,alpha=0.5)
plt.show()

plt.scatter(x,y,edgecolors='r')
plt.show()

柱状图:bar

data = [5, 20, 15, 25, 10]
plt.bar(range(len(data)), data)
plt.show()

bar的函数签名如下:

bar(left, height, width=0.8, bottom=None, **kwargs)

事实上,left,height,width,bottom这四个参数确定了柱体的位置和大小,具体定位如下:

  • (left - width / 2, bottom)为左下角位置
  • (left + width / 2, bottom + height)为右上角位置
plt.bar([0.3,1.7,4,6,7], data, width=0.6,bottom=[10,0,5,0,5])
plt.show()

对于柱状图,还可以设置以下参数:

  • 颜色:color
  • 描边:edgecolor(ec):边缘颜色;linestyle(ls):边缘样式;linewidth(lw):边缘粗细
  • 填充:hatch:可取值为: / , \ , | , - , + , x , o , O , . , *
  • 位置标志:tick_label
labels = ['Tom', 'Dick', 'Harry', 'Slim', 'Jim']
plt.bar(range(len(data)),data, color='rgb',ec='r',ls='--',lw=2,hatch='o',tick_label=labels)
plt.show()

堆叠柱状图

通过bottom参数,可以轻松实现堆叠柱状图

size = 5
x = np.arange(size)
a = np.random.random(size)
b = np.random.random(size)
plt.bar(x, a, label='a')
plt.bar(x, b, bottom=a, label='b')
plt.legend()
plt.show()

并列柱状图

并列柱状图则需要通过left属性添加偏移量来实现

total_width, n = 0.8, 2
width = total_width / n
x = x - (total_width - width) / 2

plt.bar(x, a,  width=width, label='a')
plt.bar(x + width, b, width=width, label='b')
plt.legend()
plt.show()

条形图

类似bar方法,仅换了方法名称:barh(bar-horizontal)

plt.barh(range(len(data)), data)
plt.show()

barh的签名为

barh(bottom, width, height=0.8, left=None, **kwargs)

因此,使用时可以看成是bar的旋转,其方法完全一样

正负条形图

可以通过barh方法轻松获得

a = np.array([5, 20, 15, 25, 10])
b = np.array([10, 15, 20, 15, 5])

plt.barh(range(len(a)), a)
plt.barh(range(len(b)), -b)
plt.show()

折线图:plot

a = np.array([5, 20, 15, 25, 10])
plt.plot(a)
plt.show()

和柱状图类似,plot也提供了一些常用的参数,折线图含有两种对象:点和线,因此,可以分别对点和线进行设置,对线的设置与柱状图类似,参数有ls、lw;对点的设置可以参照scatter中的参数,为了区分点和线,规定在点参数前添加一个字母m(marker)来表示,至于线的颜色,可以通过color(c)参数来设置。因此,一个简单的参数设置可以如下表示:

plt.plot(a, color='r',ls='--',lw=2,marker='o',mec='b',ms=10, mfc='w')
plt.show()

plot还提供了一个更简洁的方法:合并color、marker、linestyle三个参数为一个字符串,方便设置。

plt.plot(a,'ro--')
plt.show()

在做数据可视化的时候,常用的基本图表有折线图、散点图和柱状图三种,其它诸如饼图、箱形图等出现较少,第一部分暂不处理。有了这些图标已经可以做一些基本的分析了,下一节中,将介绍一些常用的设置,诸如坐标轴、标签等。

参考

posted @ 2017-08-18 14:00  Magle  阅读(7012)  评论(0编辑  收藏  举报