Matplotlib

文章目录

  • Matplotlib
    • 1.基础图象绘制
      • 1.1 完善原始折线图-给图形添加辅助功能
      • 1.2中文显示
      • 1.2在一个坐标系下绘制多个图像
      • 1.4 多个坐标系显示-plt.subplots(面向对象的画图方法)
      • 1.5 折线图应用场景
      • 1.6小结
    • 2.其他图像绘制
      • 2.1折线图
      • 2.2散点图绘制
      • 2.3柱状图绘制
      • 2.4小结

​ 是专门用于开发一些2D图表

​ 以渐进\交互式的方式实现数据可视化

1.基础图象绘制

import matplolib模块
import matplolib as plt1.创建画布plt.figure()
plt.figure(figsize=(),dip=)
figsize指定图的长宽
dpi图像清晰度
返回fig图像2.绘制图像 plt.plot(x,y)
plt.plot([],[])
3.显示图像
plt.show()

1.1 完善原始折线图-给图形添加辅助功能

需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围再15度-18度.

import matplolib as plt
import random#0.准备数据
x=range(60)
y_shanghai=[random.uniform(15,18) for i in x]#1.创建画布
plt.figure(figsize=(20,8),dpi=100)
#2.绘制图像
plt.plot(x,y_shanghai)#2.1添加x,y轴刻度
#设置x,y轴刻度
x_ticks_lable=['11点{}分'.format(i) for i in x]
y_ticks=range(40)#修改x,y轴刻度显示
# plt.xticks(x_ticks_lable[::5])  #坐标刻度不可以通过字符串进行修改
plt.xticks(x[::5],x_ticks_lable[::5])
plt.yticks(y_ticks[::5])#2.2添加网格显示
plt.grid(True,linestyle='--',alpha=0.5)  #linestyle 虚线 alpha=0.5透明度#2.3添加描述信息
plt.xlabel('时间')
plt.ylabel('温度')
plt.title('中午11点到12点某城市温度变化图',fontsize=20)#2.4图像保存
plt.savefig('./test.png')# 3.图像显示
plt.show()

1.2中文显示

解决方案一:

下载中文字体(黑体,看准系统版本)

  • 步骤一:下载 SimHei 字体(或者其他的支持中文显示的字体也行)

  • 步骤二:安装字体

    • linux下:拷贝字体到 usr/share/fonts 下:

      sudo cp ~/SimHei.ttf /usr/share/fonts/SimHei.ttf
      
    • windows和mac下:双击安装

  • 步骤三:删除~/.matplotlib中的缓存文件

    cd ~/.matplotlib
    rm -r *
    
  • 步骤四:修改配置文件matplotlibrc

    vi ~/.matplotlib/matplotlibrc
    

    将文件内容修改为:

    font.family         : sans-serif
    font.sans-serif         : SimHei
    axes.unicode_minus  : False
    

解决方案二:

在Python脚本中动态设置matplotlibrc,这样也可以避免由于更改配置文件而造成的麻烦,具体代码如下:

from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]

有时候,字体更改后,会导致坐标轴中的部分字符无法正常显示,此时需要更改axes.unicode_minus参数:

# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

1.2在一个坐标系下绘制多个图像

需求:再添加应该城市的温度变化

0.准备数据
x=range(60)
y_shanghai=[random.uniform(15,18) for i in x]
y_bj=[random.uniform(1,3) for i in x]#1.创建画布
plt.figure(figsize=(20,8),dpi=100)
#2.绘制图像
plt.plot(x,y_shanghai,label='上海')
plt.plot(x,y_bj,color='r',linestyle='--',label='北京')#2.1添加x,y轴刻度
#设置x,y轴刻度
x_ticks_lable=['11点{}分'.format(i) for i in x]
y_ticks=range(40)#修改x,y轴刻度显示
# plt.xticks(x_ticks_lable[::5])  #坐标刻度不可以通过字符串进行修改
plt.xticks(x[::5],x_ticks_lable[::5])
plt.yticks(y_ticks[::5])#2.2添加网格显示
plt.grid(True,linestyle='--',alpha=0.5)  #linestyle 虚线 alpha=0.5透明度#2.3添加描述信息
plt.xlabel('时间')
plt.ylabel('温度')
plt.title('中午11点到12点某城市温度变化图',fontsize=20)#2.4图像保存
plt.savefig('./test.png')#2.5显示图例
plt.legend(loc='best')# 3.图像显示
plt.show()

1.4 多个坐标系显示-plt.subplots(面向对象的画图方法)

通过subplots函数实现

matplotlib.pyplot.subplots(nrows=1,ncols=1,**fig_kw)创建应该带有多个axes(坐标系/绘图区)的图

#0.准备数据
x=range(60)
y_shanghai=[random.uniform(15,18) for i in x]
y_bj=[random.uniform(1,3) for i in x]#1.创建画布
# plt.figure(figsize=(20,8),dpi=100)
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)  #nrows=1 行,nocols=2 列,figs#2.绘制图像
# plt.plot(x,y_shanghai,label='上海')
# plt.plot(x,y_bj,color='r',linestyle='--',label='北京')
axes[0].plot(x,y_shanghai,label='上海')
axes[1].plot(x,y_bj,color='r',linestyle='--',label='北京')#2.1添加x,y轴刻度
#设置x,y轴刻度
x_ticks_label=['11点{}分'.format(i) for i in x]
y_ticks=range(40)#修改x,y轴刻度显示
# plt.xticks(x_ticks_lable[::5])  #坐标刻度不可以通过字符串进行修改
# plt.xticks(x[::5],x_ticks_lable[::5])
# plt.yticks(y_ticks[::5])
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])#2.2添加网格显示
# plt.grid(True,linestyle='--',alpha=0.5)  #linestyle 虚线 alpha=0.5透明度
axes[0].grid(True,linestyle='--',alpha=0.5)  #linestyle 虚线 alpha=0.5透明度
axes[1].grid(True,linestyle='--',alpha=0.5)  #linestyle 虚线 alpha=0.5透明度#2.3添加描述信息
# plt.xlabel('时间')
# plt.ylabel('温度')
# plt.title('中午11点到12点某城市温度变化图',fontsize=20)
axes[0].set_xlabel('时间')
axes[0].set_xlabel('温度')
axes[0].set_title('中午11点到12点某城市温度变化图',fontsize=20)
axes[1].set_ylabel('时间')
axes[1].set_ylabel('温度')
axes[1].set_title('中午11点到12点某城市温度变化图',fontsize=20)#2.4图像保存
plt.savefig('./test.png')#2.5显示图例
# plt.legend(loc='best')
axes[0].legend(loc='best')
axes[1].legend(loc='best')# 3.图像显示
plt.show()

1.5 折线图应用场景

呈现公司产品(不同区域)每天活跃用户数
呈现app每天下载数量
呈现产品新功能上线后,用户点击次数随时间的变化
拓展:画各种数学函数图像

1.6小结

添加x,y轴刻度
plt.xticks()
plt.yticks()
添加网格
plt.grid(linestyle='--',alpha=0.5)
添加描述信息
plt.xlabel()
plt.ylabel()
plt.title()
图像保存
plt.savefig('路径')
多次plot
直接进行添加
显示图例
plt.legend(loc='best')
注意:一定要在plt.plot()里面设置一个label,如果不设置,没法显示.
多个坐标系显示
plt.subplots(nrows=,ncols=)
折线图的应用
1.应用于观察数据的变化
2.可是画出一些数学函数图像设置图形风格:
颜色字符:r红色g绿色b蓝色w白色c青色m洋红y黄色k黑色
风格字符-实线--虚线-.点划线:点虛线''留空、空格
显示图例:'best'          0'upper right'   1'upper left''lower left''lower right''right''center left''center right''lower center''upper center''center'

2.其他图像绘制

2.1折线图

折线图:以折线的上升或下降来表示统计数量的增减变化的统计图

特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)

api:plt.plot(x, y)

2.2散点图绘制

**散点图:**用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。

特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

api:plt.scatter(x, y)

#0.准备数据
x=[255.98,247.07,253.14,457.85,241.58,301.01,20.67,288.64,163.56,120.06,107.83,355.99,17.78,326,22.55,23.89,44.99,222.44]
y=[221.198,47.07,53.14,257.85,141.58,201.01,120.67,88.64,63.56,220.06,207.83,155.99,117.78,226,322.55,123.89,244.99,22.44]#1.创建画布
plt.figure(figsize=(20,8),dpi=100)#2.绘制图像
plt.scatter(x,y)#3.图像显示
plt.show()

2.3柱状图绘制

**柱状图:**排列在工作表的列或行中的数据可以绘制到柱状图中。

特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)

api:plt.bar(x, width, align=‘center’, **kwargs)

#0.准备数据
#电影名字
movie_name=['雷神3:诸神','正义联盟','东方快车谋杀案','寻梦','全球','新三国','人生大事','喜欢你','艾米纳姆你']
#横坐标
x=range(len(movie_name))
#票房数据
y=[78365,17234,55331,78899,19934,98264,23345,5557,55778]#1.创建画布
plt.figure(figsize=(20,8),dpi=100)#2.绘制图像
plt.bar(x,y,color=['b','r','g','y','c','m','k','b'])#2.1修改x轴显示
plt.xticks(x,movie_name)#2.2添加网格
plt.grid(linestyle='--',alpha=0.8)#2.3添加标题
plt.title('电影片票房收入对比',fontsize=20)#3.图像显示
plt.show()

参考链接:

https://matplotlib.org/index.html

2.4小结

折线图【知道】能够显示数据的变化趋势,反映事物的变化情况。(变化)plt.plot()
散点图【知道】判断变量之间是否存在数量关联趋势,展示离群点(分布规律)plt.scatter()
柱状图【知道】绘制连离散的数据,能形多一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)plt.bar(x, width, align= "center")
直方图【知道】绘制连续性的数据展示一组或者多组数据的分布状况(统计)plt.hist(x, bins)
饼图【知道】用于表示不同分类的占比情况,通过弧度大小来对比各种分类pit.pie(x, labels, autopct, colors)

10.数据库-Matplotlib相关推荐

  1. 精心总结了10个matplotlib绘图技巧,短小精悍,威力无穷!

    作者 | 刘早起       责编 | 欧阳姝黎 大家好,我是早起. 在使用 Python 进行数据可视化时,相信不论是什么工具,你都会发现有些操作/代码段会频繁的用到,这一点在matplotlib上 ...

  2. 10 数据库与身份认证

    10. 数据库与身份认证 1. 在项目中操作数据库的步骤 安装操作MYSQL数据库的第三方模块(mysql) 通过mysql 模块连接到MYSQL数据库 通过mysql模块执行SQL语句 2. 代码实 ...

  3. 10【matplotlib常用统计图】02绘制条形图

    案例 假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a = ["战狼2","速度与激情8" ...

  4. Python可视化数据分析10、Matplotlib库

    Python可视化数据分析10.Matplotlib库

  5. 精心总结了10个matplotlib绘图技巧,短小精悍,威力无穷

    文章目录 一.快速且正确的显示中文 二.提高分辨率 三.添加数学公式 四.一行代码提高颜值 五.调整图例位置 六.获得当前绘图区域 七.隐藏坐标轴 八.指定坐标轴刻度 九.添加自定义图片 十.添加表格 ...

  6. Ubuntu 14.04(Trusty)安装MariaDB 10数据库

    CSDN GitHub Ubuntu 14.04(Trusty)安装MariaDB 10数据库 AderXCoding/system/tools/mariadb 本作品采用知识共享署名-非商业性使用- ...

  7. MySQL(10)数据库实现高可用架构之MHA

    文章目录 一.MySQL MHA介绍 1.1 什么是 MHA? 1.2 MHA 的组成 1) MHA Node(数据节点) 2) MHA Manager(管理节点) 1.3 MHA 的特点 二.MyS ...

  8. 10 Python Matplotlib 绘制极坐标图和散点图

    matplotlib 绘图实例 import numpy as np import matplotlib.pyplot as plt import matplotlibnp.random.seed(0 ...

  9. Python数据分析10——使用Matplotlib绘制3D图

    目录 3D立体图形 3D绘图 3D散点图 3D曲线图 3D平面图 3D立体图形 绘制三维图像主要通过 mplot3d 模块实现. from matplotlib import pyplot as pl ...

最新文章

  1. Transformer新型神经网络在机器翻译中的应用 | 公开课笔记
  2. 二叉树遍历的递归、非递归方法(前序、中序、后序,层序)——Java实现
  3. Spring事物详解和传播行为
  4. [攻防世界 pwn]——pwn-200
  5. php mdecrypt generic,mdecrypt_generic
  6. 花点时间了解消息,句柄和窗口
  7. oss多线程 上传_oss-android/ios-sdk 断点续传(多线程)
  8. mysql 如何添加索引_MySQL如何创建一个好索引?创建索引的5条建议【宇哥带你玩转MySQL 索引篇(三)】...
  9. oracle varchar默认长度_面试官:如何精确计算mysql数据库索引长度?
  10. 泡沫or趋势?我们到底需要什么样的区块链?
  11. HighChat动态绑定数据 数据后台绑定(三)
  12. 更小的刘海和更宽的5G天线,下一代iPhone你期待吗?
  13. 短信语音验证码发展的必然趋势
  14. ant部署web工程模板
  15. asc怎么用 linux zip_linux的asc文件怎么打开
  16. MySQL中的事务及读写锁实现并发访问控制
  17. linux HBA 卡驱动安装
  18. 如何选择erp进销存订单管理软件?
  19. vue 中使用canvas画简单的线条动画效果
  20. 什么互动管理必将风行于天下?(转)

热门文章

  1. php最快的学习路线
  2. EXCEL时间计划顺延,并跳过周末以及法定节假日
  3. 容天服务器4450系统密码,金铂gob q7-f手机忘记开机密码怎么办
  4. 最新虚拟商品自动发货系统源码 v1.1.1 (发货100)
  5. 电脑不小心被格式化了 里面的应用软件如何恢复?
  6. 网络工程师必备(网线制作)
  7. Jaeger 详细配置
  8. goto是python的保留字吗_Python中的保留字
  9. matlab 开普勒方程,理论力学中非线性问题的 MATLAB数值解
  10. 确定性网络(DetNet、D-IP)技术