常用技巧

特殊直线

画出过特定点的无穷直线,可以用 axline() 来实现。

确定平面直线两个不同的点或者一个点和斜率

语法:plt.axline(xy1, xy2=None, *, slope=None, **kwargs)

参数说明:

需要有 xy1 ,xy2 两个点坐标或者一个点 xy1 坐标和斜率 slope。

color 或 c : 线条颜色。

linestyle 或 ls :线条样式,如 ‘-’, ‘–’, ‘-.’, ‘:’ (利用这个画虚线哦)

linewidth 或 lw :线条宽度,是实数。

例:

x = np.linspace(-10,10,100)
y = 1/(1+np.exp(-x)) # sigmoid 函数plt.figure(figsize=(10,5))
plt.plot(x,y,label="$\sigma(x)$",color="r",linewidth=2)
plt.title("Matplotlib Figure: koding") #图表标题plt.axline((-5,0),(5,1),color="b",ls="-",lw=2.5)
plt.axline((0,0.5),slope=0.5,color="g",ls=":",lw=2.5)plt.grid()      #显示网格
plt.show()      #显示绘图窗口

结果:

水平与垂直直线

画出水平直线利用 axhline(),画出垂直直线 axvline()。

axhline()

语法:plt.axhline(y, xmin=0, xmax=1, **kwargs)

参数说明:

在 [xmin , xmax] 水平区间上,画出水平直线 y。xmin , xmax没有指定的情况下,默认是整个水平区间。

color 或 c : 线条颜色。

linestyle 或 ls :线条样式,如 ‘-’, ‘–’, ‘-.’, ‘:’ (利用这个画虚线哦)

linewidth 或 lw :线条宽度,是实数。

也有:plt.hlines(y, xmin, xmax,*, data=None, **kwargs)。同上,只是返回对象不同。

axvline()

语法:plt.axvline(x=0, ymin=0, ymax=1, **kwargs)

参数说明:在 [ymin , ymax] 垂直区间上,画出垂直直线 x。ymin , ymax没有指定的情况下,默认是整个水平区间。

color 或 c : 线条颜色。

linestyle 或 ls :线条样式,如 ‘-’, ‘–’, ‘-.’, ‘:’ (利用这个画虚线哦)

linewidth 或 lw :线条宽度,是实数。

也有:plt.vlines(x, ymin, ymax,*, data=None, **kwargs)。同上,只是返回对象不同。

例:

x = np.linspace(0,4*np.pi,100)
y = np.sin(x)
plt.figure(figsize=(10,5))
plt.plot(x,y,label="sin(x)",color="red",linewidth=2)
plt.title("Matplotlib.pylab Figure") #图表标题
plt.axhline(y=0,linestyle=":",color="blue",linewidth=5)#添加水平直线(虚线)
plt.axvline(x=6,color="green",linewidth=2)#添加垂直直线
plt.grid()      #显示网格
plt.show()      #显示绘图窗口

结果:

坐标刻度与特殊点
刻度

plt.xticks(),yticks()坐标轴刻度文本属性。如:plt.xticks(fontsize=16, color=“red”, rotation=45) X 轴刻度字体大小16,颜色为红色,旋转45度(文本)。

如果需要更美丽的显示刻度,那么可以借助 matplotlib.ticker 子模块接口。具体案例如下:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, FuncFormatterdef myFormat(x,loc):return r"$\frac{%d \pi}{%d}$"%(int(np.round(x/(np.pi/4))),4)#Latex语法。其中刻度间距是 pi/4 所以分母也为 4。x = np.linspace(0,4*np.pi,100)
y = np.sin(x)
fig = plt.figure(figsize=(10,5))
axs = fig.add_subplot()axs.plot(x,y,label="sin(x)",color="red",linewidth=2)
axs.set_title("Matplotlib.pylab Figure") #图表标题axs.xaxis.set_major_locator(MultipleLocator(np.pi/4)) #刻度间距 pi/4
axs.xaxis.set_major_formatter(FuncFormatter(myFormat)) #刻度文本plt.grid()      #显示网格
plt.show()      #显示绘图窗口

结果:

特殊点

如果需要给某个点坐标注,可以参考 annotate() 函数。plt对象和axis对象都有annotate() 函数。

语法:plt.annotate(text, xy, *args, **kwargs)

text : 标注的文本。Latex公式也可哦

xy : 作标注的点的坐标,形如 (x, y) 的两个实数。

这里的坐标非常灵活,可以与图形数据不同的坐标系中。比如,我们画的图在直角坐标系下,但我们在极坐标下坐标注,完全可以的,这可以借助下面的坐标系xycoords。

xytext : 标注文本的坐标。默认是 xy

xycoords : 点 xy 的坐标系。

默认是 ‘data’ 表示与图形数据坐标系一样的坐标系。

‘figure points’ : 图表最低左边的点。

‘polar’ : 极坐标,并不是原来的坐标。

其余有 ‘figure pixels’,‘figure fraction’,‘axes points’,‘axes pixels’,‘axes fraction’

xycoords : 点 xytext 的坐标系。

默认是 xycoords,表示与点 xy 的坐标系一样。

‘offset points‘ :表示与点 xy 的坐标的偏移(点)。

‘offset points‘ : 表示与点 xy 的坐标偏移(像素)。

arrowprops : dict, optional

arrowstyle: 箭头样式,有’-’,’->’,’-[’,’|-|’,’-|>’,’<-’,’<->’,’<|-’,’<|-|>’

connectionstyle : 链接样式。

更多请:https://matplotlib.org

若我们在正弦曲线3π4\frac{3 \pi}{4}43π​处作标注,可以如下操作:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, FuncFormatterdef myFormat(x,loc):return r"$\frac{%d \pi}{%d}$"%(int(np.round(x/(np.pi/4))),4)#宽度间距是 pi/4 所以分母也为 4。x = np.linspace(0,2*np.pi,100)
y = np.sin(x)
fig = plt.figure(figsize=(10,5))
axs = fig.add_subplot()axs.plot(x,y,label="sin(x)",marker="*",color="red")
axs.set_title("Matplotlib Figure: koding") #图表标题axs.xaxis.set_major_locator(MultipleLocator(np.pi/4)) #刻度间距
axs.xaxis.set_major_formatter(FuncFormatter(myFormat)) #刻度文本plt.xticks(fontsize=16, color="blue", rotation=-45)#X轴刻度属性
plt.yticks(fontsize=10, color="blue", rotation=-45)#Y轴刻度属性t = 3*np.pi/4
plt.annotate(r'$\sin(\frac{3\pi}{4})=\frac{\sqrt{2}}{2}$',xy=(t,np.sin(t)),xytext=(0, 30),xycoords='data',textcoords='offset points', fontsize=16,arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))plt.grid()      #显示网格
plt.show()      #显示绘图窗口

结果:

文本注释

可以通过 plt.text() 给某特定点加文本。比如:

plt.text(-2,2,texts,fontdict={'size':16,'color':'r'})

意思是在(-2,2)点上注释text内容。后面带辞典参数,比如字体颜色大小等。

Matplotlib 显示中文乱码问题

据我了解,Matplotlib绘制出来的图片中文显示不正常,之外坐标负号也不正常。

现象:

import numpy as np
import matplotlib.pyplot as pltx = np.linspace(0,4*np.pi,100)
y = np.sin(x)plt.figure(figsize=(10,8))
plt.plot(x,y,"bo")
plt.title("正弦函数图像") #图表标题
plt.grid()   #显示网格
plt.show()   #显示绘图窗口

结果:

所以给出以下几个解决方案:

方法1:

运行以下代码,读取系统字体:

import matplotlib
from matplotlib import pyplot as plt
font = matplotlib.font_manager.fontManager.ttflist
for i in font:print(i.name)

运行后出来已经有的字体名单,从中找到一个中文字体,把他放到以下代码里:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['AR PL UKai CN']
#"AR PL UKai CN"是上述代码找到的
#plt.rcParams['font.family'] = ['SimSun']
plt.rcParams['axes.unicode_minus'] = False #处理坐标负号不显示问题x = np.linspace(0,4*np.pi,100)
y = np.sin(x)plt.figure(figsize=(10,8))
plt.plot(x,y,"bo")
plt.title("正弦函数图像") #图表标题
plt.grid()   #显示网格
plt.show()   #显示绘图窗口

这回显示正常了。

方法2:

下载 otf 字体,字体文件放到代码文件同一个目录下。

字体下载:https://source.typekit.com/source-han-serif/cn/

字体分享 链接地址: https://share.weiyun.com/BpQ7PoAQ

import numpy as np
import matplotlib
import matplotlib.pyplot as pltfont = matplotlib.font_manager.FontProperties(fname="SourceHanSansSC-Bold.otf")
# SourceHanSansSC-Bold.otf 为下载的字体名
x = np.linspace(0,4*np.pi,100)
y = np.sin(x)plt.figure(figsize=(10,8))
plt.plot(x,y,"bo")
plt.title("正弦函数图像",fontproperties=font) #图表标题
plt.grid()   #显示网格
plt.show()   #显示绘图窗口

以上是 Matplotlib 基础部分,感谢阅读。

致谢:

Matplot 官网:https://matplotlib.org

Matplot 官网:https://www.matplotlib.org.cn/

菜鸟网站:https://www.runoob.com

Python 科学计算 [张若愚-著]

Python 科学计算(第二版)[张若愚-著]

Matplotlib 百度百科

Python数据可视化之Matplotlib-技巧篇相关推荐

  1. 《Python数据可视化之matplotlib实践》配套代码

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx <Python数据可视化之matplotlib实践> 借助matplotlib讲解 ...

  2. Python数据可视化——使用Matplotlib创建散点图

    Python数据可视化--使用Matplotlib创建散点图 2017-12-27 作者:淡水化合物 转载请注明网址:https://www.cnblogs.com/pengsky2016/p/812 ...

  3. python数据可视化(matplotlib条形图、饼图、箱状图、直方图、折线图)(代码)

    python数据可视化(matplotlib条形图.饼图.箱状图.直方图.折线图) matplotlib(条形图) 一.简单条形图 1.简单垂直条形图 2.简单水平条形图 二.水平交错条形图 三.垂直 ...

  4. Python数据可视化教程之基础篇

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 开运张 | 作者 知乎专栏 | 来源 https://zhuanlan.zhihu.c ...

  5. [转载] Python数据可视化库-Matplotlib——折线图绘制

    参考链接: Python Matplotlib数据可视化 plot折线图 # coding:utf-8 import pandas as pd import numpy as np from matp ...

  6. python 数据可视化工具--matplotlib

    数据可视化工具--matplotlib 1. 条形图 1.1 垂直条形图 1.2 水平条形图 1.3 堆叠条形图 1.4 水平交错条形图 2.饼状图 3. 直方图与核密度曲线 4. 箱线图 5. 折线 ...

  7. Python数据可视化之散点图(基础篇---图文并茂详细版!!!)

    Python数据可视化之散点图 介绍 准备工作 所需的库 虚拟环境 简单散点图 总结 两种不同颜色和图例的散点图 总结 介绍 •数据可视化的应用十分广泛,几乎可以应用于自然科学.工程技术.金融.通信和 ...

  8. Python数据可视化库Matplotlib折线图(一)

    今天我们来学习一下python的数据可视化库,Matplotlib,是一个Python的2D绘图库 通过这个库,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率图,条形图,错误图,散点图等等 废 ...

  9. Python数据可视化之Matplotlib实现各种图表

    数据分析就是将数据以各种图表的形式展现给领导,供领导做决策用,因此熟练掌握饼图.柱状图.线图等图表制作是一个数据分析师必备的技能.Python有两个比较出色的图表制作框架,分别是Matplotlib和 ...

  10. 《Python数据可视化之Matplotlib与Pyecharts》之K线图

    10.5.1  K线图及其参数配置 K线图又称蜡烛图,股市及期货市场中的K线图的画法包含四个数据,即开盘价.最高价.最低价.收盘价,所有的k线都是围绕这四个指标展开,反映股票的状况.如果把每日的K线图 ...

最新文章

  1. SpringBoot实现万能文件在线预览,已开源,真香!!!
  2. tf.train.examle函数
  3. Python3算法基础练习:编程100例( 21~ 25)
  4. 《记得我们有约》17集
  5. 从一线技术人员到阿里合伙人,主导了去“IOE”,没有他,阿里只能给美国公司打工!...
  6. 百万年薪大佬熬夜写作,Python高级编程之反爬虫及应对方案
  7. 順豐突然爆出一季度巨額虧損9億到11億
  8. hdu5141 线段树
  9. linux tomcat连接mysql步骤_Linux安装JDK 、TOMCAT 、MYSQL 步骤
  10. A1075[PAT JUDGE] 好题
  11. 批评性思维工具第11章 应对自身非理性
  12. pg数据库的一些问题
  13. centos界面的转换+快捷键的使用
  14. NTRIP传输相关,上篇SNIP NTRIP Caster学习笔记扫盲补充
  15. xp系统怎么更改计算机用户名和密码,如何解决用户不能更改WindowsXP系统密码
  16. 设计模式讲解与代码实践(三)——工厂方法
  17. 扫雷小游戏(简易版)
  18. python-pygame实现飞机大战-3-发射子弹以及击中敌机
  19. 南昌理工学院计算机科学与技术排名,南昌理工学院排名2018年下滑5名 在民办大学中实力排全国第38名...
  20. Centos - top 命令详解

热门文章

  1. C/C++自助攒机系统
  2. 华为2288H V5 U盘安装CentOS7.5
  3. 字节笔试-老c和小m之间的放书矛盾(最佳解法:并查集)
  4. MacBook Air 2013年中10.9版本升级到macOS Sierra
  5. mysql select乱码_MySQL命令行查询乱码解决方法:
  6. 恒压板框过滤实验数据处理_板框压滤机选型计算方法
  7. CSV文本文件导入excel的四种方法
  8. 基于MockingBird声音克隆
  9. 从甲骨文中国研发中心大裁员细说技术人员的未来
  10. aspen为什么不能用_科学网—Aspen Plus与麻省理工学院(MIT):牛校为什么会牛? - 叶小球的博文...