文章目录

  • 前言
  • 一、绘制散点图
  • 二、绘制条形图
    • 1、纵向条形图
    • 2、横向条形图
  • 三、绘制分组条形图
  • 四、绘制直方图
    • 1、plt.hist 方法
    • 2、plt.bar 方法绘制直方图

前言

本文为7月16日数据科学库学习笔记,分为四个章节:

  • 绘制散点图;
  • 绘制条形图:纵向&横向;
  • 绘制分组条形图;
  • 绘制直方图。

一、绘制散点图

  • 示例:北京2016年3月、10月每天白天的最高气温如列表 a 和列表 b 所示,绘制散点图:

a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,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,17,10,11,13,12,13,6]

代码如下:

from matplotlib import pyplot as plt
from matplotlib import font_manager# 设置中文字体
my_font = font_manager.FontProperties(fname=r'C:\Windows\Fonts\SIMKAI.ttf')y_3 = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,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,17,10,11,13,12,13,6]x = range(1, 32)
x_10 = range(51, 82)# 设置图片大小
plt.figure(figsize=(20, 8), dpi=80)# 绘制散点图
plt.scatter(x, y_3, label="3月份")
plt.scatter(x_10, y_10, label="10月份")# 修改 x 轴刻度
_x = list(x)+list(x_10)
_xtick_labels = ["3月{}日".format(i) for i in x]
_xtick_labels += ["3月{}日".format(i-50) for i in x_10]
plt.xticks(_x[::3], _xtick_labels[::3], fontproperties=my_font, rotation=45)# 添加图例
plt.legend(loc='upper left', prop=my_font)# 添加标题
plt.xlabel("时间", fontproperties=my_font)
plt.ylabel("温度", fontproperties=my_font)
plt.title("标题", fontproperties=my_font)# 展示
plt.show()


二、绘制条形图

1、纵向条形图

  • 示例:2017年内地电影票房前20的电影(列表 a)和票房数据(列表 b),绘制条形图:

a = [“战狼2”,“速度与激情8”,“功夫瑜伽”,“西游伏妖篇”,“变形金刚5:最后的骑士”,“摔跤吧!爸爸”,“加勒比海盗5:死无对证”,“金刚:骷髅岛”,“极限特工:终极回归”,“生化危机6:终章”,“乘风破浪”,“神偷奶爸3”,“智取威虎山”,“大闹天竺”,“金刚狼3:殊死一战”,“蜘蛛侠:英雄归来”,“悟空传”,“银河护卫队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]

  • 注意:bar 绘制条形图,只接受含数字的可迭代对象
plt.bar(range(len(a)), b, width=0.3)

完整代码如下:

from matplotlib import pyplot as plt
from matplotlib import font_manager# 设置中文字体
my_font = font_manager.FontProperties(fname=r'C:\Windows\Fonts\SIMKAI.ttf')a = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队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]# 设置图片大小
plt.figure(figsize=(20, 15), dpi=80)plt.bar(range(len(a)), b, width=0.3)# 设置 x 轴刻度
plt.xticks(range(len(a)), a, fontproperties=my_font, rotation=90)plt.show()

2、横向条形图

  • 注意:barh 用 height 调整条形图宽度。
    完整代码如下:
from matplotlib import pyplot as plt
from matplotlib import font_manager# 设置中文字体
my_font = font_manager.FontProperties(fname=r'C:\Windows\Fonts\SIMKAI.ttf')a = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队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]plt.figure(figsize=(20, 15), dpi=80)plt.barh(range(len(a)), b, height=0.3, color="orange")plt.yticks(range(len(a)), a, fontproperties=my_font)plt.grid()plt.show()


三、绘制分组条形图

  • 示例:列表 a 中的电影分别在9月14日、9月15日、9月16日三天的票房,展示电影本身的票房以及同其他电影的数据对比情况:

a = [“猩球崛起3:终极之战”,“敦刻尔克”,“蜘蛛侠:英雄归来”,“战狼2”]
b_16 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
b_14 = [2358,399,2358,362]

  • 注意:调整分组的刻度。
# 设置每组的刻度
x_14 = list(range(len(a)))
x_15 = [i + bar_width for i in x_14]
x_16 = [i + bar_width*2 for i in x_14]

完整代码如下:

from matplotlib import pyplot as plt
from matplotlib import font_manager# 设置中文字体
my_font = font_manager.FontProperties(fname=r'C:\Windows\Fonts\SIMKAI.ttf')a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]
b_16 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
b_14 = [2358,399,2358,362]# 柱形宽度
bar_width = 0.2# 设置每组的刻度
x_14 = list(range(len(a)))
x_15 = [i + bar_width for i in x_14]
x_16 = [i + bar_width*2 for i in x_14]# 设置图片大小
plt.figure(figsize=(20, 8), dpi=80)plt.bar(range(len(a)), b_14, width=bar_width, label="9月14日")
plt.bar(x_15, b_15, width=bar_width, label="9月15日")
plt.bar(x_16, b_16, width=bar_width, label="9月16日")# 添加图例
plt.legend(prop=my_font)# 在中间的柱形添加电影名
plt.xticks(x_15, a, fontproperties=my_font)plt.show()


四、绘制直方图

1、plt.hist 方法

  • 统计:获取了250部电影的时长,统计出这些电影时长的分布状态:

a=[131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136, 126, 134, 95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117, 86, 95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123, 86, 101, 99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140, 83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144, 83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137, 92,121, 112, 146, 97, 137, 105, 98, 117, 112, 81, 97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112, 83, 94, 146, 133, 101,131, 116, 111, 84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]

  • 注意:plt.hist(a, num_bins),传入需要统计的数据和组数;
  • 也可以传入一个列表,当组距不均匀的时候使用;
  • plt.hist(a, num_bins, density=1),绘制频率分布直方图,默认为频数直方图。

完整代码如下:

from matplotlib import pyplot as plt
from matplotlib import font_managera=[131,  98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115,  99, 136, 126, 134,  95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117,  86,  95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123,  86, 101,  99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140,  83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144,  83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137,  92,121, 112, 146,  97, 137, 105,  98, 117, 112,  81,  97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112,  83,  94, 146, 133, 101,131, 116, 111,  84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]# 计算组数
d = 3  # 组距
num_bins = (max(a) - min(a)) // d # 组数# 设置图片大小
plt.figure(figsize=(20, 8), dpi=80)# 绘制频率直方图
plt.hist(a, num_bins, density=1)# 设置 x 轴刻度
plt.xticks(range(min(a), max(a)+d, d))# 绘制网格线
plt.grid()plt.show()

2、plt.bar 方法绘制直方图

不均匀的组距绘制直方图:

interval = [0,5,10,15,20,25,30,35,40,45,60,90]
width = [5,5,5,5,5,5,5,5,5,15,30,60]
quantity = [836,2737,3723,3926,3596,1438,3273,642,824,613,215,47]

完整代码如下:

from matplotlib import pyplot as plt
from matplotlib import font_managerinterval = [0,5,10,15,20,25,30,35,40,45,60,90]
width = [5,5,5,5,5,5,5,5,5,15,30,60]
quantity = [836,2737,3723,3926,3596,1438,3273,642,824,613,215,47]# 设置图片大小
plt.figure(figsize=(20, 8), dpi=80)# 使用 bar 绘制直方图,调整柱形宽度为1
plt.bar(range(len(quantity)), quantity, width=1)# 设置 x 轴刻度
_x = [i-0.5 for i in range(13)]
_xtick_labels = interval + [150]
plt.xticks(_x, _xtick_labels)# 添加网格线
plt.grid(alpha=0.4)plt.show()


7月16日数据科学库学习笔记——matplotlib 绘制散点图、条形图、直方图相关推荐

  1. python读取excel画散点图-python学习之matplotlib绘制散点图实例

    要绘制单个点,可使用函数scatter(),并向其传递一对x和y坐标,它将在指定位置绘制一个点: """使用scatter()绘制散点图""" ...

  2. python画散点图类型-python学习之matplotlib绘制散点图实例

    要绘制单个点,可使用函数scatter(),并向其传递一对x和y坐标,它将在指定位置绘制一个点: """使用scatter()绘制散点图""" ...

  3. python画散点图-python学习之matplotlib绘制散点图实例

    要绘制单个点,可使用函数scatter(),并向其传递一对x和y坐标,它将在指定位置绘制一个点: """使用scatter()绘制散点图""" ...

  4. python必备库 学习笔记 matplotlib

    文章目录 Matplotlib Matplotlib介绍 为什么要学习Matplotlib Matplotlib简单实例 Matplotlib图像结构 Matplotlib三层结构 容器层 辅助显示层 ...

  5. 医咖会免费STATA教程学习笔记——如何绘制散点图

    1.如何将图形设为特定的主题: 暂时设置:set scheme s1mono 永久设置:set scheme s1mono, perm 2.绘制两个变量相关关系的散点图 (1)假设待分析的变量是mpg ...

  6. 疾风之刃的最新服务器,疾风之刃6月16日数据互通公告 数据互通服务器查询介绍...

    今天小编为大家带来了疾风之刃6月16日数据互通公告 数据互通服务器查询介绍,感兴趣的朋友们可以跟着小编去下文了解一下哦! 刚刚疾风之刃放出了6月16日的数据互通公告,这次将带来电信一区三区以及网通一区 ...

  7. 深度学习常用python库学习笔记

    深度学习常用python库学习笔记 常用的4个库 一.Numpy库 1.数组的创建 (1)np.array() (2)np.zeros() (3)np.ones() (4)np.empty() (5) ...

  8. 《R数据科学》学习笔记|Note5:使用dplyr进行数据转换(下)

    点击蓝字 关注我! 写在前面 本系列为<R数据科学>(R for Data Science)的学习笔记.相较于其他R语言教程来说,本书一个很大的优势就是直接从实用的R包出发,来熟悉R及数据 ...

  9. STM32 HAL库学习笔记4-SPI

    STM32 HAL库学习笔记4-SPI 前言 一.SPI协议简介 SPI物理层 SPI协议层 1.基本通讯过程 2. 通讯的起始和停止信号 3. 数据有效性 4. CPOL/CPHA 及通讯模式 二. ...

最新文章

  1. SQLServer2000 数据库恢复模型详解
  2. PAT1017 和强迫症做斗争
  3. 图片上的文字怎么转换为word
  4. hibernate cascade的真正含义
  5. 怎样才干成为一名优秀的软件測试人员
  6. linux sh-3.2 怎么开机,linux 开机执行脚本文件
  7. 如何证明CPU缓存行cacheline的存在?
  8. Bootstrap 和 LESS
  9. Linux(RedHat)下Weblogic 12C静默安装
  10. Google Python Style Guide
  11. 启动报错:Unsatisfied dependency expressed through field ‘baseMapper‘
  12. 通过JS语句判断WEB网站的访问端是电脑还是手机
  13. atitit tag标签标示规范 attilax总结 v2 r922.docx
  14. Rust 碎碎念:【译】Arc 在 Rust 中是如何工作的
  15. 解决MATLAB的xlsread函数读取表格失败
  16. Windows下卸载pip的方法
  17. 台湾Google云计算计划负责人叶平讲解云计算
  18. php laravel model,如何使用 Laravel Eloquent Model
  19. 情侣婚前同居,男人吃亏还是女人吃亏?
  20. 数据库常见笔试面试题

热门文章

  1. python No such file or directory
  2. 图书馆共享计算机,图书馆资源共享中计算机网络技术的使用
  3. IFS应用系统-面向服务的架构(SOA)
  4. 程序千成不能封闭自满
  5. Moodle官方主题文档中文版(自用)
  6. OO第三单元——规格化设计与地铁系统——总结
  7. 腾讯音乐 知乎 微信公众账户 搜狗
  8. Mapx 错误集合(转载)
  9. RAM,ROM,FLASH
  10. C语言输入end时结束程序,c语言输入eof结束怎么写