maplotlib基础

什么是maplotlib

matplotlib是最流行的Python底层的绘图库,主要做数据的可视化.

绘制折线图

示例1:绘制一个简单图表

In [3]:

from matplotlib import pyplot as plt
#pyplot是绘图的模块

#设置图片大小
#figure是图形图标的意思,这里是指我们画的图
#figsize是图片的大小,dpi是指图片的像素
fig = plt.figure(figsize=(20,6),dpi=80)
x = range(2,26,2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
#绘图
plt.plot(x,y)
#设置x轴的刻度
#plt.xticks(x)
plt.xticks(range(0,26,2))
#设置y轴的刻度
#plt.yticks(y)
#plt.yticks(range(0,50,2))
plt.yticks(range(min(y),max(y)+1))
#保存
plt.savefig("./1101.png")
#展示图形
plt.show()

示例2:绘制两个小时内的气温变化

中文显示
方法1:
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
方法2:
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\simhei.ttf")

In [15]:

#eoding:utf-8
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager

#设置中文字体
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\simhei.ttf")
x=range(0,120)
#取120个20到35之间的随机数
y= [random.randint(20,35) for i in range(120)]
#设置图表大小
fig = plt.figure(figsize=(20,6),dpi=80)
#设置x轴
_xtick = ["10点{:0>2d}分".format(i) for i in range(0,60)]
_xtick += ["11点{:0>2d}分".format(i) for i in range(0,60)]
# rotation表示x轴逆时针旋转的角度
#[::3]表示将序列以步长为3进行切割
plt.xticks(list(x)[::3],_xtick[::3],rotation=45,fontproperties=my_font)
#添加描述信息
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度 单位℃",fontproperties=my_font)
plt.title("10点到12点的气温变化情况",fontproperties=my_font)
#绘制网格,alpha参数设置网格的透明度
plt.grid(alpha=0.3)
#绘图
plt.plot(x,y)
#展示
plt.show()

示例3:绘制两个图形

In [126]:

#eoding:utf-8
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager

#设置中文字体
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\simhei.ttf")
#y轴
a=[40,50,52,50,53,53,56,58,60,65,64,66,70,70,71,72,77,78,77,75]
b=[50,55,55,58,65,67,70,75,80,81,82,75,65,75,70,65,65,66,70,71]
#x轴
x=range(11,31)
#设置图表大小
fig = pit.figure(figsize=(20,6),dpi=80)
#设置x轴
_xtick = ["{}岁".format(i) for i in range(11,31)]

# rotation表示x轴逆时针旋转的角度
#[::3]表示将序列以步长为3进行切割
plt.xticks(list(x),_xtick,rotation=45,fontproperties=my_font)
#添加描述信息
plt.xlabel("年龄",fontproperties=my_font)
plt.ylabel("体重 单位kg",fontproperties=my_font)
plt.title("11岁点到30岁的体重变化情况",fontproperties=my_font)
#绘制网格,alpha参数设置网格的透明度
plt.grid(alpha=0.3)
#绘图
plt.plot(x,a,label="张三")
plt.plot(x,b,label="李四")
# 添加图例
plt.legend(prop=my_font)
#展示
plt.show()

自定义绘制图形的风格
plt.plot(
    x,
    y,
    color='r',    #线条颜色
    linestyle='--', #线条风格
    alpha=0.5     #透明度
)
线条风格:
    -实线
    --虚线
    -.点划线
    :点虚线
    ''空格,无线条

绘制散点图

scatter(x,y)绘制散点图
将plt.plot(x,y)改为plt.scatter(x,y)即绘制了散点图

绘制条形图

bar(x,y)
将plt.plot(x,y)改为plt.bar(x,y)即绘制了散点图

In [243]:

#eoding:utf-8
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager

#设置中文字体
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\simhei.ttf")
#y轴
x=["战狼","速度与激情","红海行动","湄公河行动","摔跤吧!爸爸"]
y=[56.01,26.94,45.02,17.25,26.55]
plt.xticks(range(len(x)),x,fontproperties=my_font)
#绘图
plt.bar(range(len(x)),y)
plt.title("电影票房",fontproperties=my_font)
#展示
plt.show()

barh()函数绘制横着的条形图

In [147]:

#eoding:utf-8
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager

#设置中文字体
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\simhei.ttf")
#y轴
x=["战狼","速度与激情","红海行动","湄公河行动","摔跤吧!爸爸"]
y=[56.01,26.94,45.02,17.25,26.55]
plt.yticks(range(len(x)),x,fontproperties=my_font)
#绘图
plt.barh(range(len(x)),y)
plt.title("电影票房",fontproperties=my_font)
#展示
plt.show()

In [239]:

#eoding:utf-8
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager

fig = pit.figure(figsize=(20,6),dpi=80)
#设置中文字体
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\simhei.ttf")
bar_width=0.3
#y轴
x=["战狼","速度与激情","红海行动","湄公河行动","摔跤吧!爸爸"]
# 电影1号到4号的票房
y_1 = [10.01,8.94,15.02,6.25,3.55]
y_2 = [16.01,7.94,14.02,12.25,9.55]
y_3 = [18.01,9.94,11.02,13.25,13.55]
y_4 = [25.01,6.94,9.02,15.25,9.55]
x_1 = [i*2 for i in range(len(x))]
x_2 = [i+bar_width for i in x_1]
x_3 = [i+bar_width for i in x_2]
x_4 = [i+bar_width for i in x_3]
plt.xticks(x_3,x,fontproperties=my_font)
#绘图

plt.bar(x_1,y_1,width=bar_width,label="10月1日")
plt.bar(x_2,y_2,width=bar_width,label="10月2日")
plt.bar(x_3,y_3,width=bar_width,label="10月3日")
plt.bar(x_4,y_4,width=bar_width,label="10月4日")
plt.xlabel("片名",fontproperties=my_font)
plt.ylabel("票房 单位亿元",fontproperties=my_font)
plt.title("电影票房",fontproperties=my_font)
# 添加图例
plt.legend(prop=my_font)
#展示
plt.show()

绘制直方图

函数hist()绘制直方图

示例1:获取250部电影的时长,以直方图方式展示出来

In [298]:

#eoding:utf-8
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager
# 设置图表大小
fig = pit.figure(figsize=(20,6),dpi=80)
#设置中文字体
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\simhei.ttf")
# 取250个数
a = [random.randint(90,150) for i in range(150)]
a += [random.randint(110,130) for i in range(100)]
# 设置组距
d = 5
# 设置组数
num_bins = (max(a)-min(a))//d #//除是取整
plt.hist(a,num_bins)
#density为True,将纵坐标的频数改为频率方式显示
# plt.hist(a,num_bins,density=True)
# 设置x轴的取值
plt.xticks(range(min(a),max(a)+d,d))
#显示网格
plt.grid()
plt.xlabel("时长 单位min",fontproperties=my_font)
plt.ylabel("频数",fontproperties=my_font)
plt.title("电影时长分布图",fontproperties=my_font)
#展示
plt.show()

总结

matplotlib.plot(x,y)     #折线图
matplotlib.bar(x,y)      #条形图
matplotlib.scatter(x,y)   #散点图
matplotlib.hist(data,bins,normed)  #直方图

折线图:以折线的上升或下降来表示统计数量的增减变化的统计图
特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)

直方图:由一系列高度不等的纵向条纹或线段表示数据分布的情况。 
一般用横轴表示数据范围,纵轴表示分布情况。
特点:绘制连续性的数据,展示一组或者多组数据的分布状况(统计)

条形图:排列在工作表的列或行中的数据可以绘制到条形图中。
特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计)

散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。
特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值