6.Python数据分析之Matplotlib-1

Matplotlib基础

matplotlib是一个Python的2D图形包。pyplot封装了很多画图的函数
导入相关的包:
matplotlib.pyplot包含了一系列类似MATLAB中绘图函数的相关函数。每个matplotlib.pyplot中的函数对当前的图像进行一些修改。例如:产生新的图像,在图像中产生新的绘图区域,在绘图区域中画线,给绘图加上标记,等等…matplotlib.pyplot会自动记住当前的图像和绘图区域,因此这些函数会直接作用在当前的图像上。
在实际的使用过程中,常常以plt作为matplotlib.pyplot的省略。

plt.show()函数

默认情况下,matplotlib.pyplot不会直接显示图像,只有调用plt.show()函数时,图像才会显示出来。
plt.show()默认是在新窗口打开一幅图像,并且提供了对图像操作的按钮。
不过在ipython命令中,我们可以将它插入notebook中,并且不需要调用plt.show()也可以显示:
%matplotlib inline
%matplotlib notebook
不过在实际写程序中我们还是习惯用plt.show()将图像显示出来

plt.plot()函数绘制简单线图

其中y必须指定,但是x可以不指定,默认使用索引来作为x轴
只指定y
在这里插入图片描述

在这里插入图片描述
x,y都指定
在这里插入图片描述

字符参数

和MATLAB中类似,我们还可以用字符来指定绘图的格式:
表示颜色的字符参数有:
|字符| 颜色 |
|‘b’|蓝色,blue|
| ‘g’ |绿色,green |
|‘r’|红色,red|
|‘c’|青色,cyan|
|‘m’|品红,magenta|
|‘y’|黄色,yellow|
|‘k’|黑色,black|
|‘w’|白色,white|
表示类型的字符参数:
在这里插入图片描述
例如:我们要画出红色圆点
在这里插入图片描述

显示范围

与MATLAB类似,这里可以使用axis函数指定坐标轴显示范围:plt.axis([xmin,xmax,ymin,ymax])
在这里插入图片描述

传入Numpy数组,传入多组数据

之前我们传给plot的参数是列表,事实上,向plot中传入numpy数组是更正常的做法。事实上,如果传入的是列表,matplotlib会在内部将它转化成数组再进行处理:
在一个图像里画多条线:
在这里插入图片描述
在这里插入图片描述

线条属性

在这里插入图片描述

在这里插入图片描述

使用plt.plot()的返回值来设置线条属性

plot函数返回一个Line2D对象的列表,每个对象代表输入的一对组合,例如:

  • line1,line2为两个Line2D对象
    line1,line2=plt.plot(x1,y1,x2,y2,x3,y3)
  • 返回三个Line2D对象组成的列表
    lines=plt.plot(x1,y1,x2,y2,x3,y3)
    我们可以使用这个返回值来对线条属性进行设置:

在这里插入图片描述

plt.setp()修改线条性质

在这里插入图片描述
也可以使用MatLab风格:
在这里插入图片描述

子图

在这里插入图片描述

电影数据绘图

先将警告功能忽略,因为对实际运行没啥影响
在这里插入图片描述
导入第三方库:
在这里插入图片描述
通过参数的设置使中文能够正常的显示:
在这里插入图片描述
在这里插入图片描述
准备工作完成了

(1)绘制每个国家或地区的电影数量的柱状图

在这里插入图片描述
接下来将这个数据进行图形的绘制
在这里插入图片描述
接下来进行一些设定:

x = data.index
y = data.values

plt.figure(figsize=(10,6))
plt.bar(x,y,color='g')

plt.title('各国家或地区电影数量',fontsize=20)
plt.xlabel('国家或地区',fontsize=18)
plt.ylabel('电影数量',fontsize=18)

#可以调整坐标轴字体大小
plt.tick_params(labelsize=14)
#x轴显示转换90度
plt.xticks(rotation=90)

#在柱子上面显示数量,ha水平对齐,va垂直对齐
for a,b in zip(x,y):
    plt.text(a,b+10,b,ha='center',fontsize=10)

#加一些网格线
plt.grid()
    
plt.show()

在这里插入图片描述

(2)绘制每年上映的电影数量的曲线图

需要到15年的数据
在这里插入图片描述

x = data.index
y = data.values

plt.plot(x,y,color='b')
plt.title('每年电影数量',fontsize=20)
plt.ylabel('电影数量',fontsize=18)
plt.xlabel('年份',fontsize=18)

#每隔十年显示一个数字
for a,b in zip(x[::10],y[::10]):
    plt.text(a,b+10,b,ha='center',va='bottom',fontsize=10)
    
plt.annotate('2012年达到最大值',xy=(2012,data[2012]),xytext=(2025,2100),arrowprops=dict(facecolor='black',edgecolor='r'))#设置箭头位置,文字位置

plt.show()

在这里插入图片描述

(3)根据电影的长度绘制饼图

data数据准备
在这里插入图片描述

y = data.values
y = y/sum(y)

plt.figure(figsize=(7,7))
plt.title('电影时长占比',fontsize=15)
plt.pie(y,labels=data.index,autopct='%.1f%%',colors='bygr',startangle=90)#autopct='%.1f%%'设置浮点数一位小数,startangle=90希望y轴位置为起始位置
#增加图例
plt.legend()

plt.show()

在这里插入图片描述
y = y/sum(y)可以不用设置
返回值:
如果没有设置autopct,返回(patches,texts)
如果设置autopct,返回(patches,texts,autotexts)
在这里插入图片描述

(4)根据电影的评分绘制频率分布直方图

在这里插入图片描述
可以发现,电影评分服从一个右偏的正态分布

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值