数据分析工具--matplotlib

一、简介

Matplotlib是一个Python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。可以以 Pythonic 和面向对象的方式使用。
matplotlib.pyplot是一组命令样式函数,使Matplotlib的工作方式类似于MATLAB。每个pylot函数对图形进行一些更改:例如,创建图形、在图形中创建绘图区域、在绘图区域中绘制一些线、使用标签装饰绘图等。pyplot主要用于交互式绘图和程序化绘图生成的简单情况。

二、线型图的使用

import matplotlib.pyplot as plt

2.1 plt.plot()

2.1.1 调用格式

#单条线:
plot([x], y, [fmt], data=None, **kwargs)
#多条线一起画
plot([x], y, [fmt], [x2], y2, [fmt2], …, **kwargs)

例子:

plt.plot([1,2,3,4])
向plot()命令提供单个列表或数组,则matplotlib假定它是一个y值序列,并自动为你生成x值。
2.1.2 fmt参数

可选参数[fmt] 是一个字符串来定义图的基本属性如:颜色(color),点型(marker),线型(linestyle),默认为蓝色实线。

具体形式 fmt = ‘[color][marker][line]’,如指定fmt为’bo-’ # 蓝色圆点实线

fmt接收的是每个属性的单个字母缩写,例如:plot(x, y, ‘bo-’) # 蓝色圆点实线

若属性用的是全名则不能用fmt参数来组合赋值,应该用关键字参数对单个属性赋值如:

plot(x,y2,color=‘green’, marker=‘o’, linestyle=‘dashed’,linewidth=1,markersize=6)
plot(x,y3,color=’#900302’,marker=’+’,linestyle=’-’)

2.1.3 关键字参数kwargs(Line2D的属性)

参数 描述
color 线的颜色
marker 点型
linestyle or ls 线型
alpha 线的透明度(0-1的浮点数)
label 图例,通过ply.legend()显示
linewidth or lw 线宽
markeredgecolor or mec 点的边缘颜色
markeredgewidth or mew 点的边缘宽度
markerfacecolor or mfc 点的填充颜色
markersize or ms 点的大小

color参数的赋值:

1.字符串形式
'b' | 'blue'
'g' | 'green' 绿
'r' | 'red'
'c' | 'cyan' 蓝绿
'm' | 'magenta' 洋红
'y' | 'yellow'
'k' | 'black'
'w' | 'white'
2.十六进制
如: color=’#900302’
3. 0-1的小数

marker参数的赋值:

'.' point marker 点标记
',' pixel marker 像素标记
'o' circle marker 圆圈标记
'v' triangle_down marker 下三角标记
'^' triangle_up marker 上三角标记
'<' triangle_left marker 左三角标记
'>' triangle_right marker 右三角标记
'1' tri_down marker
'2' tri_up marker
'3' tri_left marker
'4' tri_right marker
's' square marker 方块标记
'p' pentagon marker 五边形标记
'*' star marker 星花*标记
'h' hexagon1 marker 六边形标记
'H' hexagon2 marker 六边形标记
'+' plus marker 加好标记
'x' x marker x标记
'D' diamond marker 方菱形标记
'd' thin_diamond marker 瘦菱形标记
'|' vline marker 竖线标记
'_' hline marker 下划线标记

linestyle参数的赋值:

'-' solid line style 实线
'--' dashed line style 虚线
'-.' dash-dot line style 点画线
':' dotted line style 点线

图例的显示位置:

格式: plt.legend(loc=‘best’)

字符串 数值
best 0
upper right 1
upper left 2
lower left 3
lower right 4
right 5
center left 6
center right 7
lower center 8
upper center 9
center 10

2.2 plt.figure() 画板对象

格式:

fig = plt.figure(
num=None,
figsize=None, 画板大小,一般为元组类型
dpi=None,
facecolor=None, 画板颜色
edgecolor=None, 图形补丁边缘颜色。
frameon=True,
FigureClass=,
clear=False,
**kwargs,
)

保存figure的图像:fig.savefig(‘xxx.png’)

2.3 plt.title() or axes.set_title()

为坐标系设置标题

参数:

  1. fontsize设置字体大小,默认12,可选参数 [‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’,‘x-large’, ‘xx-large’]
  2. fontweight设置字体粗细,可选参数 [‘light’, ‘normal’, ‘medium’, ‘semibold’, ‘bold’, ‘heavy’, ‘black’]
  3. fontstyle设置字体类型,可选参数[ ‘normal’ | ‘italic’ | ‘oblique’ ],italic斜体,oblique倾斜
  4. verticalalignment设置水平对齐方式 ,可选参数 : ‘center’ , ‘top’ , ‘bottom’ , ‘baseline’
  5. horizontalalignment设置垂直对齐方式,可选参数:left,right,center
  6. rotation(旋转角度)可选参数为:vertical,horizontal 也可以为数字
  7. alpha透明度,参数值0至1之间
  8. backgroundcolor标题背景颜色
  9. bbox给标题增加外框 ,常用参数如下:
    boxstyle方框外形
    facecolor(简写fc)背景颜色
    edgecolor(简写ec)边框线条颜色
    edgewidth边框线条大小

2.4 创建多个子坐标系 plt.subplot(nrows, ncols, index, **kwargs) or fig.add_subplot()

2.5 坐标轴的设置

1.坐标轴的范围设置
plt.axis([xmin,xmax,ymin,ymax])
plt.xlim()
plt.ylim()
ax.set_xlim()
ax.set_ylim()
2.添加坐标轴标签
plt.xlabel(xlabel,color,rotation,fondsize)
plt.ylabel()
ax.set_xlabel()
ax.set_ylabel()
3. 坐标轴刻度
ax.set_xticks([…])
ax.set_yticks([…])
plt.xticks(ticks=[],labels)
4.其他
plt.axis(‘equal’)坐标轴的比例不变调整图形
plt.axis(‘off’)
plt.axis(‘scaled’) 坐标轴比例是一样的

三、全局设置

import matplotlib as mpl

格式:

     mpl.rcParams['key']=新值

恢复全局默认设置: mpl.rcdefaults()
风格设置: mpl.style.use(‘key’)
查看所有风格: mpl.style.available

字体设置:

1.使用系统自带的字体
mpl.rcParams[‘font.sans-serif’]=[‘SimHei’]
2.使用自定义字体
from matplotlib import font_manager
font_obj=mpl.font_manager.FontProperties(fname=r’C:\Users\Administrator\Desktop\辣鸡心心体.ttf’)
plt.plot(data,data**2)
plt.title(‘我日尼玛’,fontproperties=font_obj)

四、2D图形的绘制

4.1 线形图:plt.plot()

4.2 直方图

直方图使用一系列不等高的长条来表示数据,长条的宽度表示数据的间隔范围,长条的高度表示该范围内数据的频数。

直方图是一种统计报告图

格式:plt.hist()

参数介绍:

参数名 描述
x 一个数组或者数组序列(不要求每个数组长度相同),用来存放数据
bins 整数、序列、字符串。如果为整数表示等宽区间的个数,自动计算区间范围;为序列,表示区间范围,除了最后一个,其他都含左不含右;字符川表示对应的策略
range 元组,指定最大值和最小值 ,默认为数据中的;如果bins为序列,它则没什么影响
density 布尔类型,是否返回归一化概率密度,所有区间概率和为1
weighr 形状和x相同,表示每个值对应的权重,默认每个值的权重相同
cumulative
histtype 直方图类型,‘bar’多个并列摆放;barstacked多个堆叠摆放;step生成对应折线;stepfilled填充相关区域
orientation 直方图方向

hist以元组的形式返回直方图的计算结果,包括各区间元素数量、区间的取值范围、以及具体每个区间的对象

4.3 条形图

条形图x轴表示类别

格式:plt.bar() 或者plt.barh()

参数:

参数名 描述
x x轴的位置序列,即条形的起始位置
height y轴的数值序列,即条形图的高度,需展示的数据
width 条形宽度,默认0.8
bottom y轴坐标的基线,默认为0
align 对齐方式,center、edge
color 条形图填充颜色
edgecolor 条形图边缘颜色
xerr、yerr 误差条

在一个图上显示多种条形图,可以调整位置和宽度,让他们并列摆放,也可以堆叠摆放

4.4 饼图

显示一个数据系列里各项大小以及各项所占的比例
格式:

plt.pie(
	    x,
	    explode=None,    指定区域分离的距离,通常是一个数组,默认为0
	    labels=None,     为每个区域添加标注,标签列表
	    colors=None,     为每个区域添加颜色,为列表
	    autopct=None,
	    pctdistance=0.6,
	    shadow=False,  是否右阴影效果
	    labeldistance=1.1,   标签离图中心点的距离
	    startangle=0,
	    radius=1,         饼的半径
	    counterclock=True,
	    wedgeprops=None,
	    textprops=None,
	    center=(0, 0),
	    frame=False,
	    rotatelabels=False,
	    *,
	    normalize=None,
	    data=None,

)

4.5 玫瑰图

示例:

data = [805, 598, 831, 586, 357, 562, 692, 623, 575, 605, 623, 585, 573,
            323, 805, 873, 773, 500, 396, 744, 892, 795, 598, 494, 469, 373]
theta = np.linspace(0, 2*np.pi, len(data))
fig = plt.figure(figsize=(12,8),facecolor='lightgreen')
# 绘制极坐标
ax = plt.axes(polar=True)
ax.set_theta_direction(-1)
ax.set_theta_zero_location('N')

ax.bar(x = theta,height=data,width=0.3,color=np.random.random((len(data),3)))
ax.set_axis_off()   # 关闭坐标系

# 添加text()
for angle,data in zip(theta,data):
    ax.text(angle+0.04,data+100,str(data))

4.6 散点图

格式:

plt.scatter(
		    x,
		    y,
		    s=None,     点的大小
		    c=None,     点的颜色
		    marker=None,   点型
		    cmap=None,   颜色主题
		    norm=None,
		    vmin=None,
		    vmax=None,
		    alpha=None,
		    linewidths=None,
		    verts=,
		    edgecolors=None,
		    *,
		    plotnonfinite=False,
		    data=None,
		    **kwargs,
		    )

4.7 箱线图

箱线图(别名:盒子图),利用数据中的五个统计量:最小值、第一四分位数、中位数、第三四分位数与最大值来描述数据的一种方法。它可以直观明了地识别数据批中的异常值,利用箱线图判断数据批的偏态和尾重,也可以粗略地看出数据是否具有有对称性,分布的分散程度等信息,特别可以用于对几个样本的比较。

格式:plt.boxplot(
x, 输入的数据
notch=None,
sym=None,
vert=None,
whis=None,
positions=None,
widths=None,
patch_artist=None,
bootstrap=None,
usermedians=None,
conf_intervals=None,
meanline=None,
showmeans=None,
showcaps=None,
showbox=None,
showfliers=None,
boxprops=None,
labels=None,
flierprops=None,
medianprops=None,
meanprops=None,
capprops=None,
whiskerprops=None,
manage_ticks=True,
autorange=False,
zorder=None,
*,
data=None,
)

五、图像

你可能感兴趣的:(数据分析,python,数据可视化,可视化)