当前位置: 移动技术网 > IT编程>脚本编程>Python > Matplotlib系列_绘图注意事项

Matplotlib系列_绘图注意事项

2020年07月16日  | 移动技术网IT编程  | 我要评论

import matplotlib.pyplot as plt
plt.plot([2,3,8,1,5,9])
# plt.show()
[<matplotlib.lines.Line2D at 0x21ef61de978>]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qannU69h-1594686856280)(C:/Users/Administrator/Desktop/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96_Matplotlib%E7%B3%BB%E5%88%97_%E7%BB%98%E5%9B%BE%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/output_1_1.png)]

1. 图像在Retina屏幕中显示模糊

Mac电脑绘图,Retina屏下图像显示很模糊,解决方法,Jupyter-notebook绘图前先执行下面魔术命令:

%config InlineBackend.figure_format = 'retina'

2. 图像美感问题

默认的Matplotlib生成图像不太好看,可在头部载库代码中加一句配置代码修改其样式。

注意:修改样式代码应写在修改字体代码前,否则会覆盖字体设置导致中文出错。

plt.style.use('seaborn')
plt.plot([2,3,8,1,5,9])
[<matplotlib.lines.Line2D at 0x21ef628e8d0>]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0qhaGBzH-1594686856283)(C:/Users/Administrator/Desktop/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96_Matplotlib%E7%B3%BB%E5%88%97_%E7%BB%98%E5%9B%BE%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/output_7_1.png)]

3. 中文显示乱码

Matplotlib默认不支持中文字符,因为默认设置字体是sans-serif英文字体不能显示汉字

解决方法:修改Matplotlib默认设置,加入中文字体支持。

注意:Ubuntu系统默认中文字体不识别,需要先安装下列一个中文字体以后才能使用

plt.rcParams['font.family'] = ['Arial Unicode MS', 'Microsoft Yahei', 'SimHei', 'sans-serif'] #  全局设置支持中文字体,默认 sans-serif
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
plt.plot([2,3,8,1,5,9])
plt.title('你好我是汉字标题')
<matplotlib.text.Text at 0x21ef62fe940>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qkNN8yWw-1594686856284)(C:/Users/Administrator/Desktop/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96_Matplotlib%E7%B3%BB%E5%88%97_%E7%BB%98%E5%9B%BE%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/output_11_1.png)]

4. 全部载入上述设置时,注意载入顺序

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd


plt.style.use('seaborn')  # 更换图像样式
plt.rcParams['font.family'] = ['Arial Unicode MS', 'Microsoft Yahei', 'SimHei', 'sans-serif']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 如果字体为SimHei黑体,负号乱码,解决

# MAC电脑解决图片模糊魔术命令
# %config InlineBackend.figure_format = 'retina'

5. Jupyter notebook图像输出的三种方式

1. 内联显示:网页内显示图像,方便(默认)。
2. GUI显示:GUI软件界面显示图像,可操作强。
3. 内联GUI显示:在网页内显示GUI版图像,结合前两种的好处。
   注意:网页内显示GUI图像时,cell完成后应该终止图像动态,否则下面cell执行新图像时可能会绘制到上面
         cell的图像画布中,因为两个图像的父对象id相同。
4.切换输出模式时,一般需要重启内核

一、内联模式:网页直接显示图像

Jupyter默认显示模式

# 设置的话使用下面代码
%matplotlib inline

plt.plot([2,3,8,1,5,9])
[<matplotlib.lines.Line2D at 0x21ef6667e80>]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CbvoUuy6-1594686856290)(C:/Users/Administrator/Desktop/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96_Matplotlib%E7%B3%BB%E5%88%97_%E7%BB%98%E5%9B%BE%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/output_17_1.png)]

二、GUI模式:弹出GUI软件界面显示图像

%matplotlib qt5

plt.plot([2,3,8,1,5,9])
[<matplotlib.lines.Line2D at 0x21ef9084ba8>]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iqi5gM64-1594686856296)(C:/Users/Administrator/Desktop/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96_Matplotlib%E7%B3%BB%E5%88%97_%E7%BB%98%E5%9B%BE%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/output_19_1.png)]

三、内联GUI显示:在网页内显示GUI版图像,结合前两种的好处

%matplotlib notebook

plt.plot([2,3,8,1,5,9])
Warning: Cannot change to a different GUI toolkit: notebook. Using qt5 instead.
[<matplotlib.lines.Line2D at 0x21ef91073c8>]

notebook模式,下面cell的图会画到上面底图中,终止上面图像就会正常

plt.plot([10,15,8,5,2])
plt.plot([-5, 0,5,10,15])
[<matplotlib.lines.Line2D at 0x21ef949c780>]

6. pylab,自动载入numpy和Matplotlib

了解即可,不建议使用,下面方法都会自动载入numpyMatplotlib库,直接使用

命令行打开:ipython --pylab
命令行打开:jupyter notebook --pylab=inline
Python原生环境、Pycharm或Spyder等集成模式下,载入库:from pylab import *

旧版写法,别人写你能看懂

你不要这么写

下面魔术命令自动载入NumpyMatplotlib

%pylab inline
Populating the interactive namespace from numpy and matplotlib
np.array([1,2,3,4,5])
array([1, 2, 3, 4, 5])
plt.plot([10,15,8,5,2])
[<matplotlib.lines.Line2D at 0x21ef92f22b0>]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-temyYCne-1594686856299)(C:/Users/Administrator/Desktop/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96_Matplotlib%E7%B3%BB%E5%88%97_%E7%BB%98%E5%9B%BE%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/output_30_1.png)]

IPython环境可以用下面代码载入pylab

Python原生环境、Pycharm或Spyder集成模式下:

from pylab import *   

或者直接将交互终端设置为IPython即可

本文地址:https://blog.csdn.net/weixin_43593330/article/details/107330042

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网