Matplotlib的基本使用

人工智能33

文章目录

1. 什么是Matplotlib

Matplotlib 是一个 Python 的 2D 绘图库,通过 Matplotlib ,开发者可以仅需要几行代码,便可以生成折线图,直方图,条形图,饼状图,散点图等。

2. 安装和基本使用

安装很简单。

如果是用的自己安装的python解释器,那直接pip install matplotlib就可以安装。

如果是用 Anaconda ,可以通过 conda install matplotlib ,也可以通过 pip install matplotlib 进行安装。

基本使用,首先先看以下例子:

import matplotlib.pyplot as plt
import numpy as np

y1 = [np.random.randint(0,10) for x in range(20)]
x1 = range(5,25)
plt.plot(x1,y1)

在jupyter里面运行就会出现以下图:
Matplotlib的基本使用
在pycharm里面这个要加上plt.show()才可以出图:
Matplotlib的基本使用
所以做数据分析建议最好还是用交互式的jupyter noterbok,它既简洁又能保存中间结果,看起来也更直观方便。

3.点线缩写和颜色的选择

import matplotlib.pyplot as plt
import numpy as np

y1 = [np.random.randint(0,10) for x in range(20)]
x1 = range(5,25)
plt.plot(x1,y1)

下面我们再看一下这段代码,其中 plot 是一个画图的函数,它的参数为 plot([x],y,[fmt],data=None,**kwargs)。其中 fmt 可以传一个字符串,用来给这个图做一些样式修改的。默认的绘制样式是 b- ,也就是蓝色实体线条。b就是英文blue蓝色的缩写。

点线缩写还有以下的:
Matplotlib的基本使用
除了设置线的形状外,还可以设置点的颜色。通常,有三种方法可以设置线条的颜色:

[En]

In addition to setting the shape of the line, we can also set the color of the point. In general, there are three ways to set the color of the line:

  1. 第一种是使用颜色名称( r 是 red 的缩写)的形式;
  2. 第二种是使用十六进制的方式;
  3. 第三种是使用 RGB 或 RGBA 的方式。

示例:

plt.plot([1,2,3,4,5],[1,2,3,4,5],'r') #将颜色线条设置成红色
plt.plot([1,2,3,4,5],[1,2,3,4,5],color='red') #将颜色设置成红色

plt.plot([1,2,3,4,5],[1,2,3,4,5],color='#000000') #将颜色设置成纯黑色
plt.plot([1,2,3,4,5],[1,2,3,4,5],color=(0,0,0,0)) #将颜色设置成纯黑色

最简单的还是第一种,其他的还得查RGB颜色对照表,虽然颜色种类更多,但如果没有必要,还是简单的用颜色名称这种方法更好记:
Matplotlib的基本使用

如果您使用的是颜色名称,则可以将其写入与线条形状相同的字符串中。例如,如果使用红色五角点,则可以通过以下方式完成:

[En]

If you are using a color name, you can write it in the same string as the shape of the line. For example, if you use red five-corner points, you can do it in the following ways:

Matplotlib的基本使用

因此,如果我想要将原始图片的线条更改为红色虚线,则可以通过以下代码完成:

[En]

So if I want to change the line of the original picture to a red dotted line, then I can do it through the following code:

y1 = [np.random.randint(0,10) for x in range(20)]
x1 = range(5,25)
plt.plot(x1,y1,"--",color='r')

Matplotlib的基本使用
小结:

  1. plt.plot可以只传Y轴的值,如果只传Y轴的值,那么X轴就会默认使用range(0,Y的长度)
  2. plt.plot的x和y参数不能够作为关键字参数来传递,只能作为位置参数来传。
  3. plt.plot中的data参数可以为一个字典或者DataFrame对象,然后在x和y上指定这个列的名字,那么plot会自动读取。这里有一个细节,因为x,y,fmt都是在前面,所以如果只传x和y,那么可能会产生歧义,这时候我们可以多传一个空的参数作为fmt的参数,就不会有警告了。
  4. plt.plot的fmt参数可以设置线条的样式以及颜色。
  5. plt.plot的color参数可以使用字母、十六进制,或者是RGBA的方式来设置颜色。
  6. plt.plot函数的官方文档

4. 设置图的信息

现在我们添加图后,没有指定x轴代表什么,y轴代表什么,以及这个图的标题是什么。因此以下我们通过一些属性来设置一下。

4.1 设置线条样式的方法

  1. 使用 plot 方法:

plot 方法就是用来绘制线条的,因此可以在绘制的时候就把线条相关的样式通过参数传进去。

示例如下:

y = [np.random.randint(0,10) for x in range(10)]
plt.plot(y,lw=4,c='r',ls='--',aa=True)

比如linewidth表示线的宽度,简写为lw;
c就是颜色color的首字母,r就是红色red
ls即linestyle,表示点线格式,我们这里用虚线展示。
Matplotlib的基本使用

  1. 通过 Line2D 对象来设置:

plot 方法会返回一个装有 Line2D 对象的列表,比如 lines=plt.plot(x1,y1,x2,y2) 因为绘制了两根线条,因此 lines 中会有两个 2D 对象。而如果 plot 只绘制一根线条,那么 lines 中就只有一个 Line2D 对象。拿到这个 Line2D 对象后就可以通过 set_属性名 设置线条的样式了

示例:

y1 = [np.random.randint(0,10) for x in range(10)]
y2 = [np.random.randint(0,10) for x in range(10)]
lines = plt.plot(range(10),y1,range(10),y2)
line = lines[0]
line.set_color('r')
line.set_linewidth(4)
line.set_alpha(0.5)

Matplotlib的基本使用
3. 使用 plt.setp 来设置: setp 的好处是一次性可以设置多根线条的样式。
示例代码如下:

y1 = [np.random.randint(0,10) for x in range(10)]
y2 = [np.random.randint(0,10) for x in range(10)]
lines = plt.plot(range(10),y1,range(10),y2)
plt.setp(lines,linewidth=4)

Matplotlib的基本使用
小结:

  1. 使用plot绘图的时候,就可以传递Line2D的属性值进去,来修改线条的样式。
  2. 使用plot返回的线条,单独去设置也可以,但是单独设置的时候,是通过set_Line2D属性名()的方式来设置的。
  3. 使用plt.setp来一次性设置多个线条的样式。

4. 2 设置轴和标题

4.2.1 设置轴名称

可以通过 plt.xlabel 和 plt.ylabel 来设置 x 轴和 y 轴的的名称。
示例代码如下:

 plt.plot(x,y,linewidth=10,color='red')
 plt.xlabel("x轴")
 plt.ylabel("y轴")

默认情况下是显示不了中文的。需要设置字体。

在windows中要使用中文坐标轴的话,需要调用电脑中的字体,可以通过以下代码来实现:

# 加载字体
 font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc")
 plt.plot(x,y,linewidth=10,color='red')
 plt.xlabel("x轴",fontproperties=font)
 plt.ylabel("y轴",fontproperties=font)

加载字体的时候,可以到 C:\Windows\Fonts 中找你喜欢的并且可以显示中文的字体。找到字体后,还需要找到字体的真实名称。
方法是右键->属性->安全->对象名称:
Matplotlib的基本使用

4.2.2 设置标题

可以通过 plt.title 方法来实现,比如设置中文标题,示例1:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import font_manager

y = [np.random.randint(10) for x in range(10)]
font = font_manager.FontProperties(fname=r"C:\\Windows\\Fonts\\msyh.ttc",size=20)
plt.plot(y)
plt.title("折线图",fontproperties=font)

Matplotlib的基本使用

4.2.3 设置 x 轴和 y 轴的刻度

之前我们画的图, x 轴和 y 轴的刻度都是 matplotlib 自动生成的。
如果想要在生成图的时候手动的指定,那么可以通过 plt.xticks 和 plt.yticks 来实现:

plt.xticks(range(0,20,2)) #在x轴上的刻度是0,2,4,6...20

以上会把那个刻度显示在 x 轴上。如果想要显示字符串类型,那么可以再构造一个数组,这个数组的长度必须和 x 轴刻度的长度保持一致。然后传给 xticks 的第二个参数。示例代码如下:

_x = range(0,20,2)
_xticks = ["%d坐标"%i for i in _x]
plt.xticks(_x,_xticks,fontproperties=font) #在x轴上的刻度是0坐标,2坐标...20坐标

同样 y 轴的刻度设置也是一样的,将xticks换成yticks即可。

4.2.4 复仇者联盟电影票房案例

实例展示, 复仇者联盟电影票房案例:

avenger = [17974.4,50918.4,30033.0,40329.1,52330.2,19833.3,11902.0,24322.6,47521.8,32262.0,22841.9,12938.7,4835.1,3118.1,2570.9,2267.9,1902.8,2548.9,5046.6,3600.8]
plt.figure(figsize=(15,5))
plt.plot(avenger,marker="o")
font.set_size(10)
plt.xticks(range(20),["第%d天"%x for x in range(1,21)],fontproperties=font)
plt.xlabel("天数",fontproperties=font)
plt.ylabel("票房(单位:万)",fontproperties=font)
plt.title("复仇者联盟前20天票房数据",fontproperties=font)
plt.grid(True)
plt.show()

Matplotlib的基本使用

小结

  1. 标题是通过plt.title来设置的。
  2. 刻度是通过xticks和yticks来设置的。xticks和yticks需要传递两个参数,第一个参数ticks不重要,只要跟数据量保持一致就可以了,比如有20个数据,那么只要产生20个数据的数组或者列表都可以,第二个参数labels是用来设置每个刻度上的文本显示,这个就比较重了。
  3. 轴的名称是通过xlabel和ylabel来设置的。
  4. 默认plot是不支持中文的,如果想要支持中文,那么应该创建一个字体对象matplotlib.font_manager.FontProperties,然后指定fname参数,需要具体的路径。这里还有一个小细节,拷贝出来的字体的字符串,前面有一个乱码,要把那个乱码删掉。获取字体路径的方式:右键->属性->安全->对象名称。

5. 设置文本注释和marker

5.1 设置marker

有时候,我们想要在一些关键点上重点标记出来。那么我们可以通过设置 marker 来实现。示例代码如下:

x = np.linspace(0,20)
y = np.sin(x)
plt.plot(x,y,marker="o")

Matplotlib的基本使用
我们设置了 marker 为 o ,这样就是会在 (x,y) 的坐标点上显示出来,并且显示的是圆点。其中 o 跟之前的线条样式的简写是一样的。另外,还可以通过 markerfacecolor 属性
和 markersize 来指定标记点的颜色和大小。示例代码如下:

# 以下设置标记点的颜色为黑色,尺寸为10
plt.plot(x,y,marker="o",markerfacecolor='k',markersize=10)

Matplotlib的基本使用

5.2 设置注释文本

有时候需要在图形中的某个点标记或者注释一下。那么我们可以使用 plt.annotate(text,xy,xytext,arrowprops={})来实现,其中 text是注释的文本, xy是需要注释的点的坐标, xytext是注释文本的坐标, arrowprops 是箭头的样式属性。示例代码如下:

y = np.sin(np.arange(20))
plt.plot(y,marker='o')
# plt.annotate("(0,0)",xy=(0,0),xytext=(-0.5,-0.8),arrowprops={"width":10,"headwidth":16,"headlength":20,"shrink":0.3,"facecolor":"r","edgecolor":"y"})
for index,value in enumerate(y):
    plt.annotate("(%d,%.2f)"%(index,value),xy=(index,value),xytext=(index-0.1,value-0.1))
plt.show()
# plt.savefig("./a.png") # 保存图片

Matplotlib的基本使用

小结

  1. plt.plot的时候,可以通过marker参数设置坐标点的样式。markerfacecolor代表的是点的颜色,markeredgecolor代表的是点的边界的颜色,markersize代表的是点的大小。
  2. plt.annotate(text,xy,xytext,arrowprops)是用来做文本注释的,text代表的是需要注释的文本,xy代表的是需要注释的坐标点,xytext代表的是文本的坐标点,arrowprops代表的是箭头的一些属性。
  3. annotate的官方文档

6. 设置图形样式

6.1 调整图片的大小和像素

如果想要调整图片的大小和像素,可以通过 plt.figure(num=None, figsize=None, dpi=None,facecolor=None, edgecolor=None, frameon=True)来实现。

其中 num 是图的编号, figsize 的单位是英寸, dpi是每英寸的像素点, facecolor 是图片背景颜色, edgecolor 是边框颜色, frameon 代表是否绘制画板。
示例代码如下:

plt.figure(figsize=(10,5),facecolor="r",edgecolor="k",linewidth=2,dpi=200,frameon=True)
plt.plot(np.arange(5,20))
# plt.savefig("./x.png")

Matplotlib的基本使用

6.2 显示图片的网格

我们也可以使用 grid 方法,来显示图片的网格:

plt.figure(figsize=(10,5),facecolor="r",edgecolor="k",linewidth=2,dpi=200,frameon=True)
plt.plot(np.arange(5,20))
plt.grid()

Matplotlib的基本使用

6.3 绘制多个图

绘制多个图形有两种形式,一是在一幅图中画多条线,二是画多个子图形。

[En]

There are two forms of drawing multiple graphs, the first is to draw multiple lines in one picture, and the second is to draw multiple sub-graphics.

以下分别进行讲解。

6.3.1 绘制多根折线

绘制多根线条,只要准备好坐标,重新使用 plt.plot 绘制即可。示例代码如下:

x = np.linspace(0,20)
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))

Matplotlib的基本使用

6.3.2 绘制多个子图

绘制子图的时候,我们可以使用 plt.subplot 或 plt.subplots 来实现。示例代码如下:

plt.subplot(221)
plt.plot(np.arange(10),c='r')
plt.subplot(222)
plt.plot(np.sin(np.arange(10)),c='b')
plt.subplot(223)
plt.plot(np.cos(np.arange(10)),c='y')
plt.subplot(224)
plt.plot(np.tan(np.arange(10)),c='g')

Matplotlib的基本使用
其中 subplot 中的 221 和 222 分别代表的意思是,第一个数表示这个大图中总共有 2 行,第二个数表示总共有 2 列,然后第三个数表示当前绘制第几个图。

也可以使用 fig,axs=plt.subplots(rows,cols,args,*kwargs) 来绘制多个图形,返回值是一个元组,其中的 fig 参数是 figure 对象, axs 是 axes 对象的 array 。示例代码如下:

values = np.linspace(0,20)
plt.style.use("seaborn")
fig,axes = plt.subplots(2,2,sharex=True) #Axes
ax1 = axes[0,0]
ax1.plot(values)
ax2 = axes[0,1]
ax2.plot(np.sin(values),c='y')
ax3 = axes[1,0]
ax3.plot(np.cos(values),c='b')
ax4 = axes[1,1]
ax4.plot(np.tan(values),c='g')

Matplotlib的基本使用
使用 subplot 和 subplots 都可以传递 sharex/sharey 参数,这两个参数表示是否需要共享X轴和Y轴。示例代码如下:

figure,axes = plt.subplots(2,2,sharex=True,sharey=True)
axes[0,0].plot(np.sin(np.arange(10)),c='r')
axes[0,1].plot(np.cos(np.arange(10)),c='b')
axes[1,0].plot(np.tan(np.arange(10)),c='y')
axes[1,1].plot(np.arange(10),c='g')

Matplotlib的基本使用

小结

  1. 如果想要在一个图上绘制多根折线,那么直接在plot中传递多个x和y就可以了,或者调用多次plot方法就可以了。
  2. 如果想要在一个画板上绘制多个子图(Axes对象),那么可以使用plt.subplot或plt.subplots方法。
  3. plt.subplot:plt.subplot(221),第一个数字代表行,第二个数字代表列,第三个数字代表当前第几个子图。使用了subploth后绘制的所有东西都是在当前子图上,指导出现了新的subplot。
  4. plt.subplots:fig,axes = plt.subplots(2,2,sharex=True),第一个代表行,第二个代表列,这个方法是一次性把所有的子图都绘制了,但是在子图上没有任何的东西,我们需要使用他的返回值来绘制,axes就是子图的对象。

6.4 风格设置

matplotlib 图片默认内置了几种风格。我们可以通过 plt.style.available 来查看内置的所有风格:
Matplotlib的基本使用
在绘制的时候,可以使用 plt.style.use 方法来使用不同的风格。示例代码如下:

plt.style.use("dark_background")
figure,axes = plt.subplots(2,2,sharex=True,sharey=True)
axes[0,0].plot(np.sin(np.arange(10)),c='r')
axes[0,1].plot(np.cos(np.arange(10)),c='b')
axes[1,0].plot(np.tan(np.arange(10)),c='y')
axes[1,1].plot(np.arange(10),c='g')

Matplotlib的基本使用

我将月亮缝入躯体,葬自我于山谷,如果那一天野花疯长,那便是我在讲

文章到此结束,希望这篇文章能对大家有一点帮助,欢迎三家公司,点赞,收藏藏品,如果有问题,随时打我,我有故事,你有酒,好沟通,别分手!哈哈!下次见!

[En]

This is the end of the article, I hope this article can be a little help to you, welcome three companies, like, collect something to hide, if there is a problem, feel free to hit me, I have a story, you have wine, good communication, do not break up! Ha ha ha! See you next time!

Original: https://blog.csdn.net/weixin_44327634/article/details/123523501
Author: 冰履踏青云
Title: Matplotlib的基本使用



相关阅读

Title: tensorflow:查看tensorflow版本号、查看cuda版本、查看cudnn版本、查看GPU可用性、查看cuda可用性

1 查看tensorflow版本

1.1 进入对应的环境

打开终端、进入对应的虚拟环境,我的是tensorflow1140cuda100

conda activate tensorflow1140cuda100

Matplotlib的基本使用

1.2 打开Python

python

Matplotlib的基本使用

1.3 查看tensorflow版本、安装路径

import tensorflow as tf
tf.__version__
print(tf.__version__)
tf.__path__
print(tf.__path__)

Matplotlib的基本使用

2 查看cuda版本、查看cudnn版本

2.1 进入对应的环境

打开终端、进入对应的虚拟环境,我的是tensorflow1140cuda100

conda activate tensorflow1140cuda100

Matplotlib的基本使用

2.2 输入命令,查看cuda版本、cudnn版本

conda list | grep cuda

Matplotlib的基本使用

3 查看GPU可用性

3.1 进入对应的环境

打开终端、进入对应的虚拟环境,我的是tensorflow1140cuda100

conda activate tensorflow1140cuda100

Matplotlib的基本使用

3.2 打开Python

python

Matplotlib的基本使用

3.3 查看GPU可用性

import tensorflow as tf
print(tf.test.is_gpu_available())

Matplotlib的基本使用

4 查看cuda可用性

4.1 进入对应的环境

打开终端、进入对应的虚拟环境,我的是tensorflow1140cuda100

conda activate tensorflow1140cuda100

Matplotlib的基本使用

4.2 打开Python

python

Matplotlib的基本使用

4.3 查看cuda可用性

import tensorflow as tf

tf.test.is_built_with_cuda()
print(tf.test.is_built_with_cuda())

Matplotlib的基本使用

Original: https://blog.csdn.net/shaqilaixi2/article/details/121777180
Author: C系语言
Title: tensorflow:查看tensorflow版本号、查看cuda版本、查看cudnn版本、查看GPU可用性、查看cuda可用性

相关文章
CUDA安装教程 人工智能

CUDA安装教程

浅谈CUDA和CUDNN windows系统下安装CUDA 和 CUDNN 我真的会谢,之前电脑上有cuda11.0,一直正常使用,无奈有个课程教学使用的10.2,不知为何他的代码在我这里跑起来没有用...
TensorFlow简单使用(基础篇) 人工智能

TensorFlow简单使用(基础篇)

目录 一、TensorFlow的数据类型 二、如何创建一个张量 三、常用函数 1.强制转换、最大值、最小值 2.平均值、求和 3.标记为可训练 4.四则运算 5.平方、次方与开方 6.矩阵相乘 7.输...