数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形

数据分析

Jupyter介绍
Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序。如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释。
Jupyter Notebook的主要特点
① 编程时具有语法高亮、缩进、tab补全的功能。
② 可直接通过浏览器运行代码,同时在代码块下方展示运行结果。
③ 以富媒体格式展示计算结果。富媒体格式包括:HTML,LaTeX,PNG,SVG等。
④ 对代码编写说明文档或语句时,支持Markdown语法。
⑤ 支持使用LaTeX编写数学性说明。
安装Jupyter Notebook
安装Jupyter Notebook的前提是需要安装了Python(3.3版本及以上,或2.7版本)。
安装命令:pip install jupyter
版本:Python 3.x
安装命令:pip3 install jupyter
版本:Python 2.x
安装命令:pip install jupyter
换源安装
pip install jupyter-i https://pypi.tuna.tsinghua.edu.cn/simple

如果你有任何jupyter notebook命令的疑问,可以考虑查看官方帮助文档,命令如下:
jupyter notebook --help
Jupyter Notebooks的使用
如何运行 Jupyter Notebooks?

  • 1.首先需要建立单独项目文件夹(建议名称不要包含中文)
  • 2.windows+R输入cmd进入windows终端
  • 3.切换到该文件夹路径下
  • 4.打开命令:jupyter notebook
    打开笔记本后,你会看到顶部有三个选项卡:Files、Running 和 Clusters。其中,Files 基本上就是列出所有文件,Running 是展示你当前打开的终端和笔记本,Clusters 是由 IPython 并行提供的。
    基础使用 Jupyter Notebooks
    数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第1张图片
    要打开一个新的 Jupyter 笔记本,点击页面右侧的「New」选项。
    • Python3 --> 创建python file
    • Text File --> 文本编辑器
    • Folder --> 创建文件夹
    • Teminal --> 终端(类似于Windows上的cmd)
    创建python file
    如图所示:
    数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第2张图片
    在代码上面的菜单中,你有一些操作各个单元的选项:添加、编辑、剪切、向上和向下移动单元、运行单元内的代码、停止代码、保存工作以及重启 kernel。
    数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第3张图片
    快捷键使用
    编辑模式(按 Enter 生效),Enter --> 编辑模式
    Ctrl-右: 跳到单词右边
    Ctrl-删除: 删除前面的单词
    Ctrl-Delete: 删除后面的单词
    Ctrl-Y: 重做
    Alt-U: 重新选择
    Ctrl-M: 进入命令行模式
    Ctrl-Shift-F: 打开命令配置
    Ctrl-Shift-P: 打开命令配置
    Esc: 进入命令行模式
    Shift-Enter: 运行代码块, 选择下面的代码块
    Ctrl-Enter: 运行选中的代码块
    Alt-Enter: 运行代码块并且插入下面
    Ctrl-Shift-Minus: split cell at cursor(s)
    Ctrl-S: 保存并检查
    下: 光标下移
    上: 光标上移
    Tab: 代码完成或缩进
    Shift-Tab: 工具提示
    Ctrl-]: 缩进
    Ctrl-[: 取消缩进
    Ctrl-A: 全选
    Ctrl-Z: 撤销
    Ctrl-/: 评论
    Ctrl-D: 删除整行
    Ctrl-U: 撤销选择
    Insert: 切换 重写标志
    Ctrl-Home: 跳到单元格起始处
    Ctrl-上: 跳到单元格起始处
    Ctrl-End: 跳到单元格最后
    Ctrl-下: 跳到单元格最后
    Ctrl-左: 跳到单词左边

命令行模式(按 Esc 生效),Esc --> 命令模式
F: 查找并且替换
Ctrl-Shift-F: 打开命令配置
Ctrl-Shift-P: 打开命令配置
Enter: 进入编辑模式
P: 打开命令配置
Shift-Enter: 运行代码块, 选择下面的代码块
Ctrl-Enter: 运行选中的代码块
Alt-Enter: 运行代码块并且插入下面
Y: 把代码块变成代码
M: 把代码块变成标签
R: 清除代码块格式
1: 把代码块变成heading 1
2: 把代码块变成heading 2
3: 把代码块变成heading 3
4: 把代码块变成heading 4
5: 把代码块变成heading 5
6: 把代码块变成heading 6
K: 选择上面的代码块
上: 选择上面的代码块
下: 选择下面的代码块
J: 选择下面的代码块
Shift-K: 扩展上面选择的代码块
Shift-上: 扩展上面选择的代码块
Shift-下: 扩展下面选择的代码块
Shift-J: 扩展下面选择的代码块
Ctrl-A: select all cells
A: 在上面插入代码块
B: 在下面插入代码块
X: 剪切选择的代码块
C: 复制选择的代码块
Shift-V: 粘贴到上面
V: 粘贴到下面
Z: 撤销删除
D,D: 删除选中单元格
Shift-M: 合并选中单元格, 如果只有一个单元格被选中
Ctrl-S: 保存并检查
S: 保存并检查
L: 切换行号
O: 选择单元格的输出
Shift-O: 切换选定单元的输出滚动
H: 显示快捷键
I,I: 中断服务
0,0: 重启服务(带窗口)
Esc: 关闭页面
Q: 关闭页面
Shift-L: 在所有单元格中切换行号,并保持设置
Shift-空格: 向上滚动
空格: 向下滚动

**实际上,大家不需要去背这些快捷键。可以进入命令模式,摁住H就可以看到快捷键了。
**数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第4张图片
Matplotlib介绍
Matplotlib是一个Python的基础绘图库,它可与 NumPy 一起使用,代替Matlab使用

  1. 将数据进行可视化,使数据更直观
  2. 使数据更加更具有说服力
    Matplotlib安装
    由于Matplotlib是第三方库,所以我们需要安装它才可以使用。注意,Matplotlib3.0要求python3版本才可安装使用。
    安装命令:pip install matplotlib
    换源安装:pip install matplotlib-i https://pypi.tuna.tsinghua.edu.cn/simple
    安装可参考官网:https://matplotlib.org/users/installing.html

图片与子图
Matplotlib所绘制的图位于图片(Figure)对象中。我们可以通过plt.figure生成一个新的图片:
下面展示一些 内联代码片

from matplotlib import pyplot as plt
fig = plt.figure()

代码展示:

import matplotlib.pyplot as plt
1-子图的绘制
plt.figure()
plt.subplot()
# plt.figure??
fig = plt.figure()
# plt.subplot??
# plt.subplot(221)

ax1 = plt.subplot(2,2,1)   # 2*2 最多为4个图形 index=1 选择了第一个
ax2 = plt.subplot(2,2,2)
ax3 = plt.subplot(2,2,3)
ax4 = plt.subplot(2,2,4)
# ax5 = plt.subplot(2,2,5)     # 超出报错

ax2.scatter(range(5),range(5)) # 给ax2子图对象绘制散点图
plt.show()    # 展示图片

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第5张图片

除此之外,Matplotlib包含一个便捷方法plt.subplots创建一个新的图片,然后返回包含了已生成子图对象的Numpy数组。
• plt.subplots(nrows, ncols, sharex, sharey)
• nrows子图的行数
• ncols子图的列数
• sharex 所有子图使用相同的x轴刻度
• sharey 所有子图使用相同的y轴刻度

代码展示:

2-子图的绘制
plt.subplots()
# plt.subplots??

fig,axs = plt.subplots(2,2,sharex=True,sharey=True,figsize=(14,8)) # 2*2 nrows子图的行数 ncols子图列数 sharex,sharey 共享x,y轴
axs[0,0].scatter(range(5),range(5)) # [0,0]选中第一张图
axs[0,1].scatter(range(5),list(range(5))[::-1]) # [0,1] 选中第二张图

# 调整间距
plt.subplots_adjust(wspace=0,hspace=0)
plt.show()

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第6张图片

Matplotlib绘制图形
matplotlib能够绘制折线图,散点图,条形图,直方图,饼图等等。
具体可参考:https://matplotlib.org/gallery/index.html

折线图

代码展示:

from matplotlib import pyplot as plt 
plt.plot??  #查看源码以及属性介绍
x = [1,2,3,4]  # 列表 array_like 
y = [4,2,3,1]
plt.plot(x,y)  # 绘制折线图
plt.show()     # 展示图片,释放内存

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第7张图片
给折线设置颜色等

代码展示:

x = [1,2,3,4]  # 列表 array_like 
y = [4,2,3,1]
plt.plot(x,y,color="g",linestyle="--",marker="*")  # 绘制折线图
plt.show()     # 展示图片,释放内存

数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第8张图片
plt.plot()参数使用具体可参考:
https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.plot.html#matplotlib.axes.Axes.plot

练习1:假设一天中每隔两个小时的气温分别是[15,13,14.5,17,20,25,26,26,27,22,18,15],绘制图形。

  • 变化:折线
  • x:时间
  • y:温度

代码展示:

# 每隔两个小时  2 4 6 8... 24
x = range(0,24,2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]

# 设置刻度 以x显示
plt.xticks(x)

# 绘制图形
plt.plot(x,y)

# 展示图形
plt.show()

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第9张图片
设置刻度为 0,0.5,1,1.5…23.5
注意:range(0,24,0.5)报错 # start stop step 不要用浮点数
[i/2 for i in range(0,48)] # 列表推导式

代码展示:

# 放大画布
plt.figure(figsize=(14,8))

# 每隔两个小时  2 4 6 8... 24
x = range(0,24,2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]

# 设置刻度 以 0,0.5,1,1.5......23.5 显示
x_t = [i/2 for i in range(0,48)]
plt.xticks(x_t,rotation=45)

# 绘制图形
plt.plot(x,y)

# 展示图形
plt.show()

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第10张图片
设置x刻度以 0h,0.5h,1h,1.5h…23.5h 显示

代码展示:

# 放大画布
plt.figure(figsize=(14,8))

# 每隔两个小时  2 4 6 8... 24
x = range(0,24,2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]

# 设置x刻度 以 0h,0.5h,1h,1.5h......23.5h 显示
# ticks:刻度
# lables:标签
x_t = [i/2 for i in range(0,48)]
x_l = ["{}h".format(i/2) for i in range(0,48)]
plt.xticks(x_t,x_l,rotation=45)   # x_t刻度,x_l刻度标签

# 设置y刻度 最大值最小值
y_t = range(min(y),max(y)+1)
plt.yticks(y_t)

# 绘制图形
plt.plot(x,y)

# 添加x轴标签
plt.xlabel("time")

# 添加y轴标签
plt.ylabel("temperature")

# 添加标题
plt.title("temperature change")

# 添加网格
plt.grid()

# 保存图片 注意:要在show之前保存 否则:空白图 
# plt.savefig("mat.png")
plt.savefig("mat.jpg")

# 展示图形 释放
plt.show()

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第11张图片
plt.figure(figsize=None,dpi=None)
生成新的图片,figsize:图片大小,dpi:透明度

plt.savefig(fname)
保存图片

plt.xticks(ticks=None)
设置x轴刻度的值

plt.yticks(ticks=None)
设置y轴刻度的值

plt.xlabel(xlabel)
设置x轴标签

plt.ylabel(ylabel)
设置y轴标签

plt.title()
设置图标题

plt.grid()
根据x轴和y轴的数值展示轴网格

练习2:如果列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况

  • 列表拼接
  • 解决中文显示问题

代码展示:

import random  # 内置模块 随机
全局的设置方式
设置matplotlib自带的字体 只能设置.ttf字体,不支持.ttc字体

import matplotlib
font = {
    'family':'SimHei',
    'weight':'bold',
    'size':12
}
matplotlib.rc("font", **font)
matplotlib.rc??

设置字体法2
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)

设置字体法3:局部
- 相当于将字体注册到了matplotlib字体库中
from matplotlib.font_manager import FontProperties 
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)
# x,y数据
x = range(0,120)
y = [random.randint(30,38) for i in range(120)]  # 生成120个随机整数

# 绘制图形
plt.plot(x,y)

# x刻度:0,10,20,30,40,50....110
x_t = range(0,120,10)

# 显示x刻度标签 为 十点0分 十点10分 ..十点50分 十一点0分...十一点50分
x_l = ["十点{}分".format(i) for i in range(0,60,10)]
x_l+=["十一点{}分".format(i) for i in range(0,60,10)]
plt.xticks(x_t,x_l,rotation=45,fontproperties=font)

plt.show()

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第12张图片
假设大家在30岁的时候,根据自己的实际情况,统计出来了你和同桌从11岁到30岁每年交的男女朋友的数量如列表a和b,请绘制出该数据的折线图,以便分析自己和同桌每年交男女朋友的数量走势

  • a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
  • b = [1,0,3,1,2,2,2,3,1,1,1,1,1,2,1,1,2,3,2,2]

代码展示:

from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties 
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=10)
# 构建x,y
my_y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
my_cls_y = [1,0,3,1,2,2,2,3,1,1,1,1,1,2,1,1,2,3,2,2]
x = range(11,31)
# len(my_y) == len(x)

# 绘图
plt.plot(x,my_y,label="自己")
plt.plot(x,my_cls_y,label="同桌")

# 添加图例
# 1.plt.plot()添加label属性 
# 2.plt.legend() 局部指定字体 而是使用 prop
plt.legend(prop = font)

# 刻度 11岁..30岁
x_l = ["{}岁".format(i) for i in x]
plt.xticks(x,x_l,fontproperties=font,rotation=45)

# 添加数据标签
# for x_i,y_i in zip(x,my_y):
#     plt.annotate(f"{y_i}",xy=(x_i,y_i),xytext=(x_i,y_i-1))
    
# for x_i,y_i in zip(x,my_cls_y):
#     plt.annotate(f"{y_i}",xy=(x_i,y_i),xytext=(x_i,y_i-1))
def auto_label(x_po,y_po):
    for x_i,y_i in zip(x_po,y_po):
        plt.annotate(f"{y_i}",xy=(x_i,y_i),xytext=(x_i,y_i-0.1))
        
auto_label(x,my_y)
auto_label(x,my_cls_y)


# 展示图片
plt.show()

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第13张图片
添加注释文本 annotate

  • text 是注释的文本
  • xy 是需要注释的点的坐标
  • xytext 是注释文本的坐标
  • arrowprops 是箭头的样式属性

代码展示:

# plt.annotate??

from matplotlib import pyplot as plt
import random
li = [random.randint(10,30) for i in range(10)]
li
# 结果为:[28, 26, 26, 22, 14, 22, 14, 13, 17, 19]
y = li    # [28, 26, 26, 22, 14, 22, 14, 13, 17, 19]
x = range(10)  # [0,1,2,.....9]

plt.plot(x,y,marker="*")
# plt.annotate("28",xy=(0,28),xytext=(-0.3,28))
# plt.annotate("28",xy=(0,28),xytext=(-0.3,0),arrowprops={"width":2})

# 实现:将每个点都使用上数据标签
# 思路:什么在变?对应的参数(坐标)在变
# (0,28) (1,26)
# plt.annotate("28",xy=(0,28),xytext=(-0.3,28))
for x_i,y_i in zip(x,y):
    plt.annotate(f"{y_i}",xy=(x_i,y_i),xytext=(x_i,y_i-1))

plt.show()

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第14张图片
散点图
散点图介绍

  • 散点图用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式
    特点:判断变量之间是否存在数量关联趋势,表示离群点(分布规律)
    如图所示:

数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第15张图片
散点图绘制
散点图通过scatter()函数绘制
plt.scatter(x,y) # 以默认的形状颜色等绘制散点图

假设通过爬虫你获取到了长沙2019年4,10月份每天白天的最高气温(分别位于列表a,b),那么此时如何寻找出气温和随时间变化的某种规律

  • a = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,14,15,15,15,19,21,22,22,22,23]
  • b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,15,10,11,13,12,13,6]

代码展示:

# plt.scatter??

# x,y
y_4 = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,14,15,15,15,19,21,22,22,22,23]
y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,15,10,11,13,12,13,6]
x = range(1,32) # 4,10共享x 31天

# 绘制图形
plt.scatter(x,y_4)
plt.scatter(x,y_10)

plt.show()

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第16张图片
优化散点图
代码展示:

# 优化:4,10月份的分布分开
# x,y
y_4 = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,14,15,15,15,19,21,22,22,22,23]
y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,15,10,11,13,12,13,6]
x_4 = range(1,32)    # 1~31
x_10 = range(51,82)  # 20+31 ~ 31+31+20

# 绘制图形
plt.scatter(x_4,y_4)
plt.scatter(x_10,y_10)

# 刻度 四月1号 四月31号   十月1号..十月31号
x_t = list(x_4)+list(x_10)
x_l = ["四月{}号".format(i) for i in x_4]
x_l += ["十月{}号".format(i-50) for i in x_10]  # 51-50,81-50
plt.xticks(x_t[::4],x_l[::4],fontproperties=font,rotation=45)

plt.show()

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第17张图片
条形图
条形图介绍
条形图是用宽度相同的条形的高度或长短来表示数据多少的图形。条形图可以横置或纵置,纵置时也称为柱形图。
特点
• 能够使人们一眼看出各个数据的大小。
• 易于比较数据之间的差别。
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第18张图片
条形图绘制方法:
条形图通过bar()函数绘制
plt.bar(x, height) # 绘制以x为x轴位置,height为y轴位置的竖条形图

练习
假设你获取到了2019年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据

  • a = [“流浪地球”,“复仇者联盟4:终局之战”,“哪吒之魔童降世”,“疯狂的外星人”,“飞驰人生”,“蜘蛛侠:英雄远征”,“扫毒2天地对决”,“烈火英雄”,“大黄蜂”,“惊奇队长”,“比悲伤更悲伤的故事”,“哥斯拉2:怪兽之王”,“阿丽塔:战斗天使”,“银河补习班”,“狮子王”,“反贪风暴4”,“熊出没”,“大侦探皮卡丘”,“新喜剧之王”,“使徒行者2:谍影行动”,“千与千寻”]
  • b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23,5.22] 单位:亿

代码展示:

# 构建x,height
a = ["流浪地球","复仇者联盟4:终局之战","哪吒之魔童降世","疯狂的外星人","飞驰人生","蜘蛛侠:英雄远征","扫毒2天地对决","烈火英雄","大黄蜂","惊奇队长","比悲伤更悲伤的故事","哥斯拉2:怪兽之王","阿丽塔:战斗天使","银河补习班","狮子王","反贪风暴4","熊出没","大侦探皮卡丘","新喜剧之王","使徒行者2:谍影行动","千与千寻"]
b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23,5.22]

# 放大画布
plt.figure(figsize=(14,8))

# 柱状图
# width 调整柱子的宽度 默认0.8
# bottom  y的起始值改变了  堆叠图
# align 默认为:center居中  设置为:edge边缘 取决于width的正负  正:右边 负:左边
plt.bar(a,b,width=-0.3,bottom=10,align="edge")

# 设置刻度
plt.xticks(fontproperties=font,rotation=90)

plt.show()

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第19张图片
分组条形图

代码展示:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)

# 构建x,height
fruits = ["苹果","梨子","车厘子"]
Q1_sales = [1000,800,3000]
Q2_sales = [1200,700,2800]

# 柱子的对应索引位置 [0,1,2]
# 设置柱子宽度
width = 0.35
# rects1 = plt.bar(list(range(len(fruits))),Q1_sales,width)
# rects2 = plt.bar(list(range(len(fruits))),Q2_sales,width)

# 蓝黄柱子宽度都为0.35 怎么使蓝色显示左边  黄色显示右边
# 位置左移width/2  位置-width/2    [0-width/2,1-width/2,2-width/2]

po_l = [i-width/2 for i in list(range(len(fruits)))]
plt.bar(po_l,Q1_sales,width,label="Q1")

po_r = [i+width/2 for i in list(range(len(fruits)))]
plt.bar(po_r,Q2_sales,width,label="Q2")

# 设置图例 
plt.legend()

# 数据标签
auto_label(po_l,Q1_sales)
auto_label(po_r,Q2_sales)

plt.xticks(list(range(len(fruits))),fruits)

plt.show()

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第20张图片
堆叠条形图

  • 没有封装相应的接口

代码展示:

# 构建x,height
fruits = ["苹果","梨子","车厘子"]
Q1_sales = [1000,800,3000]
Q2_sales = [1800,200,2800]

plt.bar(fruits,Q1_sales,width=0.5,label="Q1")
plt.bar(fruits,Q2_sales,width=0.5,bottom=Q1_sales,label="Q2")

plt.legend()
plt.show()

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第21张图片
水平条形图
代码展示:

# plt.barh??

a = ["流浪地球","复仇者联盟4:终局之战","哪吒之魔童降世","疯狂的外星人","飞驰人生","蜘蛛侠:英雄远征","扫毒2天地对决","烈火英雄","大黄蜂","惊奇队长","比悲伤更悲伤的故事","哥斯拉2:怪兽之王","阿丽塔:战斗天使","银河补习班","狮子王","反贪风暴4","熊出没","大侦探皮卡丘","新喜剧之王","使徒行者2:谍影行动","千与千寻"]
b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23,5.22]

plt.figure(figsize=(14,8))
plt.barh(a,b,height=0.5)

plt.show()

如图所示:
数据分析-Jupyter,Matplotlib介绍-Matplotlib绘制图形_第22张图片

你可能感兴趣的:(数据分析,jupyter,Matplotlib绘制图形,python,数据分析,数据可视化)