1. matplotlib是一种python底层的绘图工具。

我们可以将爬虫爬取的数据,来进行分析绘制成更直观的图像,便于分析与整理。

2. matplotlib的基本要点:

(1). 如何设置图片的大小;
(2). 如何保存到本地;
(3). x轴和y轴的描述信息;
(4). 中文显示乱码问题;
(5). 调整x轴和y轴的刻度;
(6). x轴的刻度信息过长,如何调整?
(7). 标记最高点;

3.绘制图形种类:

折线图(plot),散点图(scatter),条形图(bar为竖向,brah为横向),直方图(hist)

折线图案例1:假设一天中每隔两小时气温变化的折线图绘制;

from matplotlib import pyplot as plt ,font_manager
# 给定字体用来解决中文乱码问题(fname可以通过在命令行输入fc-list :lang=zh获取)
myfont=font_manager.FontProperties(fname='/usr/share/fonts/cjkuni-uming/uming.ttc' ,size=18)
titlefont=font_manager.FontProperties(fname='/usr/share/fonts/cjkuni-uming/uming.ttc' ,size=25)
# 模拟真实的x轴数据
x_times=range(0,24,2)
# 模拟真实的x轴数据
y_temp=[15, 12, 13, 20, 23, 30, 15, 12, 13, 20, 23, 30]# 设置图片的大小
plt.figure(figsize=(10,10))# 通过x轴y轴数据绘制图像
plt.plot(x_times,y_temp)# 添加x,y轴以及标题的描述信息,以及规定字体。
plt.title('每天的气温变化(每隔两小时)',fontproperties=titlefont)
plt.xlabel('时间',fontproperties=myfont)
plt.ylabel('温度',fontproperties=myfont)# 调整x,y轴的刻度(让图上的每个点都在x,y轴上显示对应的刻度,而且刻度单位与实际情况一致,ratation是旋转,当轴上标注内容过多,可能会出现重叠,导致信息不清楚,可以旋转来达到信息清晰。)
plt.xticks(x_times,labels=["%s时0分"%(i) for i in x_times], fontproperties=myfont,rotation=45)
y_temp_range=range(min(y_temp),max(y_temp)+1,2)
plt.yticks(y_temp_range,labels=["%s。C" %(i) for i in y_temp_range] , fontproperties=myfont)# 标注点
plt.scatter(x_times[2],y_temp[2],color='b')
plt.scatter(x_times[2],y_temp[2],color="",market='o',edgecolors='r',s=300)# 绘制背景网格(alpha为透明度)
plt.grid(alpha=0.3)# 保存到本地
plt.savefig('doc/temp.png')

折线图案例2:绘制10点到12点每分钟气温变化

from matplotlib import pyplot as plt, font_managermyfont=font_manager.FontProperties(fname='/usr/share/fonts/cjkuni-uming/uming.ttc' ,size=18)
titlefont=font_manager.FontProperties(fname='/usr/share/fonts/cjkuni-uming/uming.ttc' ,size=25)# 模拟真实的x轴,y轴数据
x_times=range(120)
y_temp=[random.randint(15,30) for i in range(120)]
# 图片大小
plt.figure(figsize=(20,20))# 绘制图片
plt.plot(x_times,y_temp)# x,y轴与标题描述
plt.title("10点到11点温度变化)",fontproperties=titlefont )
plt.xlabel("时间", fontproperties=myfont)
plt.ylabel("温度", fontproperties=myfont)# x轴刻度
x_labels=['10时%s分' %(i) for i in range(0,60,10)]
x_labels+=['11时%s分' %(i) for i in range(0,60,10)]
plt.xtick(x_times[::10],labels=x_labels,fontproperties=myfont,rotation=45)
y_temp_range=range(min(y_temp),max(y_temp)+1,2)
plt.xticks(y_temp_range,labels=['%s。C' %(i) for i in y_temp_range],fontproperties=myfont)# 保存
plt.savefig('doc/temp2.png')

散点图绘制案例:3,10月份每天白天气温随时间变化的散点图

from matplotlib import pyplot as plt
from matplotlib import font_managermyfont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=18)
titlefont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=24)# 由于双份数据,x轴的数据为两个
x_march = range(1, 32)
x_oct = range(50, 81)# 图表的y轴的数据
y_temp_march = [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_temp_oct = [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]#   设置图片的大小
plt.figure(figsize=(30, 10))# 绘制两份图形
plt.scatter(x_march, y_temp_march, label="3月的温度变化", color='r', alpha=0.5)
plt.scatter(x_oct, y_temp_oct, label="10月的温度变化", color='g', alpha=0.5)#  x,y轴以及标题的描述信息
plt.title("北京3,10月份每天白天的最高气温随时间(天)变化的散点图", fontproperties=titlefont)
plt.xlabel("时间", fontproperties=myfont)
plt.ylabel("温度", fontproperties=myfont)# 调整x轴和y轴的刻度
_x_info = list(x_march) + list(x_oct)
_x_labels_march = ["3月%s日" % (i) for i in x_march]
_x_labels_oct = ["10月%s日" % (i - 49) for i in x_oct]  # range(50, 81)
plt.xticks(_x_info[::3], labels=(_x_labels_march + _x_labels_oct)[::3], fontproperties=myfont, rotation=45)plt.legend(prop=myfont, loc="upper left")
plt.grid(alpha=0.5)# 保存
plt.savefig('doc/scatter.png')

单个条形图绘制案例:电影票房数据对比

from matplotlib import pyplot as plt
from matplotlib import font_managermyfont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=18)
titlefont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=24)y_money = [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]
x_movies = ["流浪地球%s" %(i) for i in range(len(y_money))]# 设置图片的大小
plt.figure(figsize=(30, 10))
# (1,2)  -====('a', 10)
# 生成竖向的条形图
plt.bar(range(len(x_movies)), y_money, color='yellow', width=0.5)
# # 生成横向的条形图
# plt.barh(range(len(x_movies)), y_money, color='orange', height=0.7)# 修改刻度信息
# plt.xticks(range(len(y_money)), labels=x_movies, fontproperties=myfont, rotation=45)
plt.yticks(range(len(y_money)), labels=x_movies, fontproperties=myfont, rotation=45)# x轴和y轴的描述
plt.title("某年内地电影票房前20的电影和电影票房数据", fontproperties=titlefont)
plt.xlabel("电影名", fontproperties=myfont)
plt.ylabel("电影票房(单位:亿)", fontproperties=myfont)
# 保存
plt.savefig('doc/bar.png')

多重条形图绘制案例:三天内电影票房对比

from matplotlib import pyplot as plt
from matplotlib import font_manager
myfont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=18)
titlefont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=24)x_movies_name = ["猩球崛起3:终极之战", "敦刻尔克", "蜘蛛侠:英雄归来", "战狼2"]
y_16 = [15746, 312, 4497, 319]
y_15 = [12357, 156, 2045, 168]
y_14 = [2358, 399, 2358, 362]plt.figure(figsize=(30, 10))# 生成竖向的条形图
bar_width = 0.3  # 条形的宽度
x_range = range(len(x_movies_name))plt.bar(x_range, y_14, color='green', width=bar_width, label="2017-09-14票房数据")
plt.bar([i + bar_width for i in x_range], y_15, color='blue', width=bar_width, label="2017-09-15票房数据")
plt.bar([i + bar_width * 2 for i in x_range], y_16, color='red', width=bar_width, label="2017-09-16票房数据")# 更改x轴上的刻度
plt.xticks(range(len(x_movies_name)), labels=x_movies_name, fontproperties=myfont, rotation=45)#  x轴和y轴的描述信息;
plt.title("某年内地电影票房前20的电影和电影票房数据", fontproperties=titlefont)
plt.xlabel("电影名", fontproperties=myfont)
plt.ylabel("电影票房(单位:亿)", fontproperties=myfont)# 保存
plt.savefig('doc/bar.png')

直方图案例:电影时长分布

import random
from matplotlib import  pyplot as plt
# 模拟爬取的y轴数据
y = [random.randint(60,180) for i in range(250)]# 直方图绘制数据分为20个分组;
plt.hist(y, 20)
plt.savefig('doc/01_hist.png')

直方图案例:电影的时长分布设置组数

import random
from matplotlib import pyplot as plt# 250个分布在60-180之间的数据 x为(60-180),所有y之和为250
y = [random.randint(60, 180) for i in range(250)]
d = 10  # 组距
# 组数
num_bins = (max(y) - min(y)) // d# 设置x轴的刻度范围,
plt.xticks(list(range(min(y), max(y) + d))[::d])# 绘制网格,linestyle网格线的格式
plt.grid(linestyle='-.', alpha=0.3)# 直方图绘制数据分为num_bins个分组;
plt.hist(y, num_bins)
# 保存
plt.savefig('doc/02_hist.png')

问题

如果图中x或者y轴的0刻度与直角坐标器出现不重合怎么办,解决方法:

# gca====get current axis 获取当前的坐标轴
ax = plt.gca()
# 设置右边框和上边框;
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 设置x轴为下边框
ax.xaxis.set_ticks_position('bottom')
# 设置y轴为作边框
ax.yaxis.set_ticks_position('left')
# 设置x轴和y轴的交点为(0, 0)点;
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0 ))

python数据整理--绘图工具matplotlib相关推荐

  1. python中plotly_Python绘图工具Plotly的简单使用

    1.Plotly被称为史上最好的绘图工具之一,为了更好的展示金融数据的复杂性. Plotly的官方网站为:https://plot.ly/ python量化的关键是金融数据可视化,无论是传统的K线图, ...

  2. python 画柱状图-python使用Plotly绘图工具绘制柱状图

    本文实例为大家分享了python使用Plotly绘图工具绘制柱状图的具体代码,供大家参考,具体内容如下 使用Plotly绘制基本的柱状图,需要用到的函数是graph_objs 中 Bar函数 通过参数 ...

  3. python绘制饼图-Python使用Plotly绘图工具,绘制饼图

    今天我们来学习一下如何使用Python的Plotly绘图工具,绘制饼图 使用Plotly绘制饼图的方法,我们需要使用graph_objs中的Pie函数 函数中最常用的两个属性values,用于赋值给需 ...

  4. python画直方图代码-Python使用Plotly绘图工具,绘制直方图

    今天我们再来讲解一下Python使用Plotly绘图工具如何绘制直方图 使用plotly绘制直方图需要用到graph_objs包中的Histogram函数 我们将数据赋值给函数中的x变量,x = da ...

  5. Python使用Plotly绘图工具,绘制面积图

    今天我们来讲一下如何使用Python使用Plotly绘图工具,绘制面积图 绘制面积图与绘制散点图和折线图的画法类似,使用plotly graph_objs 中的Scatter函数,不同之处在于面积图对 ...

  6. python动态横道图_详细解说Python使用Plotly绘图工具,绘制甘特图

    今天来讲一下如何使用Python 的绘图工具Plotly来绘制甘特图的方法 甘特图大家应该了解熟悉,就是通过条形来显示项目的进度.时间安排等相关情况的. 我们今天来学习一下,如何使用ployly来绘制 ...

  7. 视频教程-Python数据可视化库:Matplotlib视频课程-Python

    Python数据可视化库:Matplotlib视频课程 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲师, ...

  8. 01 熟悉python绘图工具——matplotlib

    一.简单案例 Matplotlib的图像是画在figure,每一个figure又包含了一个或多个axes(axes可用于指定绘图的子区域) import matplotlib.pyplot as pl ...

  9. Python数据科学库02(matplotlib)

    Python数据科学库02 学习02 matplotlib 对比常用统计图 折线图的更多应用场景: 1.呈现公司产品(不同区域)每天活跃用户数 2.呈现app每天下载数量 3.呈现产品新功能上线后,用 ...

最新文章

  1. 携程将推“3+2”工作模式:每周到岗3天,在家2天,你羡慕吗?
  2. 研发管理---(1)持续交付
  3. linux web目录安全设置,[LNMP]Linux的Web环境的安全配置
  4. 开发版速达光耀-无公网IP服务器访问整体解决方案
  5. 深度可分离卷积vs标准卷积
  6. pdfFactory和pdfFactory Pro有什么不同
  7. cimiss java,cimis
  8. MATLAB 2018b 安装教程(图解)Mac Win Linux下均可安装
  9. 如何做用户画像分析?
  10. php smtp发送邮件
  11. 进行大数据测试需要关注那些测试点?
  12. Python模块之Pandas 格式化数据
  13. microbit测试题
  14. 教育+直播APP系统开发方案
  15. 谁都有追逐梦想的权利
  16. 回馈社会 初志企业文化践行月活动顺利开展
  17. 二部六层电梯程序西门子1200二部六层电梯程序,无需eet可直接仿真使用
  18. bim计算机管理室内设计,如何基于BIM进行室内设计?
  19. FIAA固定资产【09资产折旧】
  20. Html 上传文件、压缩包或文件夹

热门文章

  1. python刷网易云_Python脚本用于定时关闭网易云音乐PC客户端
  2. 利用php的GD库封装的海报demo
  3. SMMS:一个不错的免费图床
  4. python3的基本数据类型_python3基本数据类型
  5. 用python花猫_Python竟能画这么漂亮的花,帅呆了(代码分享)
  6. unity加载文件夹下的所有预制体
  7. 只要60页!金融量化博士总结的Python数据分析入门知识手册
  8. HTML+CSS小白入门与进阶教程
  9. sketch清理缓存文件,sketch清理运行内存工具
  10. Hyper-V下Centos7连接不上外网