matplotlib可视化学习小结
函数式绘图和面向对象式绘图
1.参考了matlab里面的绘图函数语法,简单易上手
2.面向对象式绘图,更懂matplotlib底层架构,有更多的功能
-
numpy:存储和处理大量矩阵
ndarray:
创建,一般有三种创建方式:
1从python的基础数据对象转化
2.通过numpy内生成的函数生成
3.从硬盒(文件)读取数据
索引和切片
1.print c[1:5]#从1到5,不包括5,第一个数字索引为0
2.print c[:5]
3.print c[::-1]
min,max,medium,mean,variance,sort
1.np.func(x)
2 x.func()
linspace(-10,10,100)#等均分值,从-10到10,分成100份
x=np.random.randint(1,100,10)#随机生成1-100中的十位数 -
散点图:显示两组数据的值,每个点的左边位置由变量的值决定
由一组不连接的点完成,用于观察两种变量的相关性
例如身高-体重、温度-维度、等等。正相关、负相关、不相关x=np.random.randn(N)
实例:股票价格涨幅。plt.scatter(height,weight)
外观调整:①颜色:c ②点大小:s ③透明度:alpha
④点形状,marker 加在scatter()里面,用逗号分隔
import matplotlib.pyplot as plt
plt.plot([1,2,3],[3,2,1])
plt.show() -
条形图:用来比较多个分类的数据销量,用于较小的数据集分析,例如不同季度的销量,不同国家的人口等
-
饼状图:百分比
explode=[0,0.05,0.08,0]
plt.pie(x=fracs,labels=labels,autopct=’%.0f%%,explode=explode,shadow=True)# 显示比例值autopct=’%.0f%%’
explode突出某一项,例如第二项为0.5,远离了圆心
x :(每一块)的比例,如果sum(x) > 1会使用sum(x)归一化;
labels :(每一块)饼图外侧显示的说明文字;
explode :(每一块)离开中心距离;
startangle :起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起;
shadow :在饼图下面画一个阴影。默认值:False,即不画阴影;
labeldistance :label标记的绘制位置,相对于半径的比例,默认值为1.1, 如<1则绘制在饼图内侧;
autopct :控制饼图内百分比设置,可以使用format字符串或者format function
'%1.1f’指小数点前后位数(没有用空格补齐);
pctdistance :类似于labeldistance,指定autopct的位置刻度,默认值为0.6;
radius :控制饼图半径,默认值为1;
counterclock :指定指针方向;布尔值,可选参数,默认为:True,即逆时针。将值改为False即可改为顺时针。 wedgeprops :字典类型,可选参数,默认值:None。参数字典传递给wedge对象用来画一个饼图。
例如:wedgeprops={‘linewidth’:3}设置wedge线宽为3。
textprops :设置标签(labels)和比例文字的格式;字典类型,可选参数,默认值为:None。传递给text对象的字典参数。
center :浮点类型的列表,可选参数,默认值:(0,0)。图标中心位置。
frame :布尔类型,可选参数,默认值:False。如果是true,绘制带有表的轴框架。
rotatelabels :布尔类型,可选参数,默认为:False。如果为True,旋转每个label到指定的角度。 -
箱型图(盒须图、盒式图、箱线图)
是一种用作显示一组数据分散情况资料的统计图
上边缘,上四分位数,中位数,下四分位数,下边缘,异常值
np.random.seed(100)#随机生成100个
data=np.random.normal(size=(100,5),loc=0,scale=1)
#5个100的箱图
labels=[‘A’,‘B’,‘C’,‘D’,‘E’]
plt.boxplot(data,labels=labels,sym=‘o’,whis=5)
#sym 调整异常值的形状 whis 代表虚线长度,是一个比例值
plt.show() -
颜色和样式
八种内建默认颜色缩写
b:blue g:green r:red c:cyan(青色) m:magenta y:yellow
k:black w:white
其他颜色表示方法
灰色阴影
html十六进制
RGB元祖 -
面向对象vs matlab style
1.pyplot:经典高层封装,到目前为止,我们所用的都是pyplot
2.pylab:将Matplotlib和Numpy合并的模块,模拟Matlab的编程环境
3.面向对象的方式:Matplotlib的精髓,更基础和底层的方式
总结:推荐综合使用1,3显示导入Numpy
区别:
arange()类似于内置函数range(),通过指定开始值、终值和步长创建表示等差数列的一维数组,注意得到的结果数组不包含终值。
linspace()通过指定开始值、终值和元素个数创建表示等差数列的一维数组,可以通过endpoint参数指定是否包含终值,默认值为True,即包含终值。 -
子图,subplot
Matplotlib对象简介>FigureCanvas>Figure>Axes 坐标轴
fig=plt.figure()
Figure 实例
可以添加Axes实例
ax=fig.add_subplot(111)
返回Axes实例
参数一,子图总行数,参数二,子图总列数,参数三,子图位置
在Figure上添加Axes的常用方法. -
多图figure(同一时间生成多张图,多个figure对象)
-
网格:一张图中以网格为背景,可以看到某个点具体的位置
-
图例
plt.legend(loc=2,ncol=1)
#位置参数
loc 位置(0:best 1:右上角 2:左上角 3:左下角 4:右下角) ncol 图例分为几列
坐标轴范围的调整
axis参数:x轴最小坐标,x轴最大坐标,y轴最小坐标,y轴最大坐标
plt.axis([-5,5,20,60])xlim参数:x轴最小坐标,x轴最大坐标
plt.xlim([-5,5])
plt.xlim(xmin = -5),只调整一边
plt.ylim() -
调整坐标轴刻度
获取当前图像的坐标轴 面向对象方法nbins代表总共有多少格,指定为x轴,'y’则指定y轴,面向对象无交互功能
ax = plt.gca()
ax.locator_params(‘x’,nbins=20) -
调整日期
plt.plot_date(dates,y,linestyle=’-’,marker=’’)
fig.autofmt_xdate()#将日期的排列大小自适应,斜的日期 -
添加坐标轴
双坐标轴 twinx(), twiny() -
添加注释
plt.annotate(‘this is the bottom’,xy=(0,1),xytext=(0,20),arrowprops=dict(facecolor=‘g’,frac=0.5,headwidth=20,width=10))
#(0,1)是顶点坐标,(0,20)是文字起始的坐标 -
文字
绘制蓝色的粗斜文字 -
Tex公式
#r代表不转译,$作为开始和结束符
区域填充
形状
样式美化
使用自带样式进行美化
极坐标 theta
函数积分图
散点,条形图
matplotlib.pyplot.hist(
x, bins=10, range=None, normed=False,
weights=None, cumulative=False, bottom=None,
histtype=u’bar’, align=u’mid’, orientation=u’vertical’,
rwidth=None, log=False, color=None, label=None, stacked=False,
hold=None, **kwargs)
x : (n,) array or sequence of (n,) arrays
这个参数是指定每个bin(箱子)分布的数据,对应x轴
bins : integer or array_like, optional
这个参数指定bin(箱子)的个数,也就是总共有几条条状图
normed : boolean, optional
这个参数指定密度,也就是每个条状图的占比例比,默认为1
color :这个指定条状图的颜色