matplotlib:

最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建

安装:

pip3 install matplotlib
或者: pip3 install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

基本使用:

#-*-coding:utf-8-*-
from matplotlib import pyplot as plt # 导入pyplot# 数据在x轴的位置,是一个可迭代对象
x = range(2,26,2)
# 数据在y轴的位置,是一个可迭代对象
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]# 通过实例化一个figure并且传递参数,能够在后台自动使用该figure实例
# dpi使图片更加清晰,整数,表示该窗口的分辨率
# figsize 设置图形的大小,a 为图形的宽,b 为图形的高,单位为英寸
fig = plt.figure(figsize=(20,8),dpi=80)# 传入x和y,通过plot绘制出折线图
plt.plot(x,y)plt.xticks(range(2,25)) # 设置x的刻度plt.yticks(range(min(y),max(y)+1)) # 设置y的刻度# 保存图片
# plt.savefig("./test1.png")plt.show() # 画图

效果图:


问题:

如果列表y表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况?
用随机数字模拟这两个小时的温度变化情况:y =  [random.randint(20,35) for i in range(120)]

当我们需要用到中文字符串作为坐标上显示的内容时,我们发现中文字符不能正常显示


原来Matplotlib 默认情况不支持中文,我们可以使用以下简单的方法来解决。

查看linux/mac下面支持的字体:
fc-list  -->查看支持的字体
fc-list :lang=zh -->查看支持的中文(冒号前面有空格)那么问题来了:如何修改matplotlib的默认字体?
通过matplotlib.rc可以修改,具体方法参见源码(windows/linux)
通过matplotlib 下的font_manager可以解决(windows/linux/mac)!


此外,我们还可以用如下方法查看系统的字体:

from matplotlib import pyplot as plt
import matplotlibfonts = [f.name for f in matplotlib.font_manager.fontManager.ttflist]for font in fonts:print(font)可以打印出font_manager 下 ttflist 中所有注册的字体名如:文泉驿等宽微米黑(WenQuanYi Micro Hei)
然后用以下代码设置即可:plt.rcParams['font.family']=['WenQuanYi Micro Hei']

我们可以看到我们电脑自带的中文字体和存储的路径

也可以去百度下载我们喜欢的字体

解决了这个问题以后,就可以正常显示

代码:

from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager# 第一种解决中文不能显示的问题(windows,linux)
font = {'family' : 'WenQuanYi Micro Hei', # 字体名(fc-list :lang=zh查出来的)'weight' : 'bold',                'size'   : '10'}                  # 字体大小matplotlib.rc("font",**font)# 第二中解决中文不能显示问题的方法(需要给xticks方法传递参数)
# my_font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/wqy/wqy-microhei.ttc")# 随机温度
y = [random.randint(20,35) for i in range(120)]
x = list(range(120))plt.figure(figsize=(20,8))plt.plot(x,y)# 调整x的刻度
# 传给xticks的第二个参数,使其显示指定内容
lable_xticks = ["10点:{}分".format(i) for i in range(60)]
lable_xticks += ["11点:{}分".format(i) for i in range(60)]# 取步长,数字和字符串一一对应,使数据的长度一样
plt.xticks(x[::3],lable_xticks[::3],rotation=45) # rotation指定逆时针选择的度数
# plt.xticks(x[::3],lable_xticks[::3],rotation=45,fontproperties=my_font) # x的刻度
plt.yticks(range(20,35))  # y的刻度# plt.savefig("./images/temperature2.png")plt.show()

效果图如下:

作为线性图的替代,可以通过向 plot() 函数添加格式字符串来显示离散值。 可以使用以下格式化字符。

    字符           描述'-'            实线样式'--'          短横线样式'-.'         点划线样式':'         虚线样式'.'            点标记','           像素标记'o'            圆标记'v'          倒三角标记'^'          正三角标记'<'       左三角标记'>'       右三角标记'1'          下箭头标记'2'          上箭头标记'3'          左箭头标记'4'          右箭头标记's'          正方形标记'p'          五边形标记'*'          星形标记'h'      六边形标记 1'H'        六边形标记 2'+'        加号标记'x'       X 标记'D'      菱形标记'd'       窄菱形标记'|'     竖直线标记'_'      水平线标记

以下是颜色的缩写:

字符       颜色
'b'       蓝色
'g'       绿色
'r'       红色
'c'       青色
'm'       品红色
'y'         黄色
'k'       黑色
'w'       白色

要显示圆来代表点,而不是上面示例中的线,请使用 ob 作为 plot() 函数中的格式字符串。

实例:

from matplotlib import pyplot as plt x = range(1,11)
y =  range(1,11)
plt.plot(x,y,"ob")
plt.show()

效果图:
**上述显示离散值参考自菜鸟教程。

给图像添加描述信息:

plt.xlabel("时间")  # x轴的描述信息
plt.ylabel("温度")  # y轴
plt.title("10点到12点温度随时间的变化情况")  # 标题描述# 当使用第二种解决中文显示问题的方法时,需要为这几个方法传递参数
# 如: plt.xlabel("时间",fontproperties=my_font)


例题:

假设大家在30岁的时候,根据自己的实际情况,统计出来了从11岁到30岁每年交的女(男)朋友的数量如列表a,
请绘制出该数据的折线图,以便分析自己每年交女(男)朋友的数量走势a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]要求:y轴表示个数x轴表示岁数,比如11岁,12岁等

代码:

from matplotlib import pyplot as plt
import matplotlibfont = {'family' : 'WenQuanYi Micro Hei','weight' : 'bold',                'size'   : '10'}           matplotlib.rc("font",**font)y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
x = range(11,31)# 设置图像大小
plt.figure(figsize=(20,8),dpi=80)plt.plot(x,y)# 设置x轴刻度
_xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x,_xtick_labels)
plt.yticks(range(0,7))# 绘制网格
plt.grid(color="#f0f",alpha=0.1,linestyle="--",linewidth=3)# 展示
plt.show()

绘制网格:

plt.grid(color="#f0f",alpha=0.1,linestyle="--",linewidth=3)
# color指定颜色,alpha指定网格透明度,linestyle指定线条的样式,linewidth指定线条宽度可通过更改x轴和y轴的刻度改变网格的疏密程度

效果图示:

例题:

假设大家在30岁的时候,根据自己的实际情况,统计出来了你和你同桌各自从11岁到30岁每年交的女(男)朋友的数量如列表a和b,请在一个图中绘制出该数据的折线图,以便比较自己和同桌20年间的差异,同时分析每年交女(男)朋友的数量走势
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,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]
要求:y轴表示个数x轴表示岁数,比如11岁,12岁等

一次画多个图:

plt.plot(x,y_1)
plt.plot(x,y_2)
plt.plot(...)只需要plot多次即可

添加图例:

# 需要在指定数据参数时,传递label参数
plt.plot(x,y_1,label="同桌")
plt.plot(x,y_2,label="自己")# 然后legend即可
plt.legend()# 当用第二中方法解决中文显示问题时,需要添加prop参数
plt.legend(prop=my_font)plt.legend(loc="upper left")# loc参数:指定图例显示的位置
可供选择的选项:传入数字和字符串都可    'best' : 0,
'upper right': 1,
'upper left' 2,
'lower left ': 3,
'lower right': 4,
'right': 5,
'center left': 6,
'center right' : 7,
'lower center' : 8,
'upper center' : 9,
'center': 10

改变折线的颜色:

plt.plot(x,y_1,label="同桌",color="#aaa",alpha=1,linestyle="-.",linewidth=3)color指定颜色,alpha指定网格透明度,linestyle指定线条的样式,linewidth指定线条宽度

代码:

from matplotlib import pyplot as plt
import matplotlibfont = {'family' : 'WenQuanYi Micro Hei','weight' : 'bold',                'size'   : '10'}           matplotlib.rc("font",**font)y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y_2 = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]x = range(11,31)# 设置图像大小
plt.figure(figsize=(20,8),dpi=80)# 画多个图
plt.plot(x,y_1,label="同桌",color="#ff0",alpha=1,linestyle="-.",linewidth=3)
plt.plot(x,y_2,label="自己",color="#f0f",alpha=1,linestyle=":",linewidth=3)# 设置x轴刻度
_xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x,_xtick_labels)
plt.yticks(range(0,7))# 添加图例
plt.legend(loc="upper left")# 绘制网格
plt.grid(color="#f0f",alpha=0.1,linestyle="--",linewidth=3)# 展示
plt.show()

效果图:

对比常用统计图:

折线图:以折线的上升或下降来表示统计数量的增减变化的统计图
特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)直方图:由一系列高度不等的纵向条纹或线段表示数据分布的情况。
一般用横轴表示数据范围,纵轴表示分布情况。
特点:绘制连续性的数据,展示一组或者多组数据的分布状况(统计)条形图:排列在工作表的列或行中的数据可以绘制到条形图中。
特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计)散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量
之间是否存在某种关联或总结坐标点的分布模式。
特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

更多图请参考matplotlib官网:

https://matplotlib.org/gallery/index.html

官网中每种图都有其指定的代码样例

数据分析之matplotlib画图工具的使用(一)相关推荐

  1. Python 3/前端 画图工具:Matplotlib,canvajs,pyecharts

    之前我一直是用Matplotlib画图,写了挺多博客: Python:matplotlib绘图时指定图像大小,放大图像 matplotlib绘制平滑的曲线 Matplotlib使用日期作为横坐标 ma ...

  2. python自定义colorbar_python可视化 matplotlib画图使用colorbar工具自定义颜色

    python matplotlib画图使用colorbar工具自定义颜色 colorbar(draw colorbar without any mapple/plot) 自定义colorbar可以画出 ...

  3. 基础画图工具matplotlib

    matplotlib的基本了解 - Matplotlib- matplotlib是什么?- matplotlib的基本要点- matplotlib的折线图, 柱状图, 直方图, 散点图;- 更多的画图 ...

  4. matplotlib画图使用python可视化colorbar工具自定义颜色

    python matplotlib画图使用colorbar工具自定义颜色 colorbar(draw colorbar without any mapple/plot) 自定义colorbar可以画出 ...

  5. python学习之数据分析(二):Matplotlib库:常用画图技巧, 折线图, 散点图,柱状图,直方图, 饼图

    一.Matplotlib之HelloWorld 1. 什么是Matplotlib: 专门用于开发2D图表(包括3D图表) 使用起来及其简单 以渐进.交互式方式实现数据可视化 2. matplotlib ...

  6. python可视化 matplotlib画图使用colorbar工具自定义颜色

    python matplotlib画图使用colorbar工具自定义颜色 colorbar(draw colorbar without any mapple/plot) 自定义colorbar可以画出 ...

  7. python软件怎么画图_python 安装画图工具matplotlib

    安装matplotlib该工具,花费了我半天时间才能安装成功(是在window7 64位 Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1 ...

  8. python画图工具turtle、matplotlib学习

    turtle库函数应用 import turtle as t t定义为turtle对象:相当于t=turtle.Turtle() t.hideturtle() hideturtle()隐藏画笔的tur ...

  9. Python超简单容易上手的画图工具库

    今天,在网上发现一款很棒的python画图工具库.很简单的api调用就能生成漂亮的图表.并且可以进行一些互动. pyecharts 是一个用于生成 Echarts 图表的类库.Echarts 是百度开 ...

最新文章

  1. 一个苹果手机移动电源也能让他拽得跟二五八万似的
  2. Effective Java:对于所有对象都通用的方法
  3. Hadoop大数据--Mapreduce程序运行并发度
  4. Mybatis批量更新转
  5. springcloud 微服务鉴权_Java微服务框架spring cloud
  6. windows安装 Git Large File Storage大文件下载工具ge
  7. dz论坛php.ini设置,Discuz!X1.5至3.2论坛Win主机与Linux主机伪静态设置方法
  8. adb 更新 android sdk,[转载]安装Android时SDK AVD MANAGER时更新报错的解决办法
  9. SpringMVC 中设置日期字符串转换格式
  10. (计算机组成原理)第七章输入和输出系统-第四节2:I/O方式之程序中断方式
  11. 美团电单车中标警用车采购项目,上千辆定制版警用电单车上线!
  12. SEO行业的路上没有捷径
  13. 并联串联混合的电压和电流_电子电路基础,教你看懂电子电路,简单的串并联...
  14. aspjpeg组件在2008R2下“ActiveX 部件不能创建对象”
  15. 案例1-合并2个不同文件夹中的csv文件到另外一个目录,相同的文件名进行数据合并,不同的文件名直接移到新文件夹...
  16. IT,互联网,科技,技术博客网站推荐
  17. java实现火车票查询_java抓取12306信息实现火车余票查询示例
  18. 教师人生格言积极向上的句子
  19. 68dva的相关知识
  20. Spring(二)--------Spring配置、DI依赖注入、Bean自动装配

热门文章

  1. 赛迪网:VMware访谈实录
  2. 光滑曲线_光滑流形初步(3)——一些典型例子
  3. 飞花摘叶还是重剑无锋
  4. android 仿微信来电_仿MIUI、微信来电通知无法解决通知折叠到通知列表
  5. 为什么循环队列要浪费一个存储空间
  6. Python实例:七段数码管
  7. 手环的PCBA部分,主要包括一颗集成BLE功能的MCU,以及由MCU控制的各种外设
  8. lammps案例:分子自由落体运动模拟
  9. 图片1920x1080分辨率怎么调 ?图片如何修改分辨率?
  10. Android模拟键盘输入功能的实现