matplot画图-画曲线(一)

  • Post author:
  • Post category:其他



目录


1、画简单曲线


1.1、画一个正弦曲线


1.2、调整更多的样式


1.3、添加图例


2、添加图注


2.1、设置画布大小


2.2、添加标题和坐标轴描述


2.3、设置刻度范围


3、画多个曲线


4、保存为图像


5、处理中文乱码问题


6、添加注释


7、figure


Matplotlib 是 Python 的一个绘图库。它包含了大量的工具,你可以使用这些工具创建各种图形,包括简单的散点图,正弦曲线,甚至是三维图形。


全局定义:

import numpy as np
import matplotlib.pyplot as plt

1、画简单曲线

1.1、画一个正弦曲线

import numpy as np
import matplotlib.pyplot as plt

def line_test():    
    # 它包含了50个元素的数组,这50个元素均匀的分布在[0, 2*pi]的区间上。然后通过np.sin(x)生成y   
     x = np.linspace(0, 2 * np.pi, 50)    
     y = np.sin(x)    
     
     # 通过plt.plot(x, y)来画出图形,并通过plt.show()来显示。    
     plt.plot(x, y)    
     plt.show()

结果:

1.2、调整更多的样式

将plot函数改为:plt.plot(x, y, ‘m–‘)

结果为:


列举常用样式,三个组合使用,决定线的样式:

1、常见颜色表示:

颜色

蓝色

绿色

红色

青色

品红

黄色

黑色

白色

表示方式

b

g

r

c

m

y

k

w

2、常见点类型:

点类型

像素

方形

三角形

表示方式

.

,

s

^

3、常见线类型:

线类型

直线

虚线

点线

点划线

:

-.

1.3、添加图例

plt.plot(x, y, 'm--', label="y=sin(x)") # 添加图例
plt.legend(loc='best') # 自动适配最佳位置

结果:

2、添加图注

2.1、设置画布大小

plt.figure(figsize=(6, 4), dpi=100) # 画布调整为 600*400, w*h

结果:

其中dpi为每英寸的像素点数,默认为100。figsize=(w, h),最终的画布大小为(w*dpi, h*dpi)。


https://blog.csdn.net/weixin_39956558/article/details/110908699#commentBox

2.2、添加标题和坐标轴描述

plt.title("y=sin(x)")  # 设置标题
plt.xlabel('X')  # xlabel 和 ylabel 来设置轴的名称
plt.ylabel('Y')

2.3、设置刻度范围

# 设置坐标轴的刻度,范围
plt.xlim((0, 2 * np.pi))
plt.ylim((-2, 2))

# 可以通过 xticks 和 yticks 来设置轴的刻度
plt.xticks((0, np.pi * 0.5, np.pi, np.pi * 1.5, np.pi * 2))

结果:

3、画多个曲线

plt.plot(x, y, 'm--', label="y=sin(x)")
plt.plot(x, np.cos(x), 'g', label="y=cos(x)")
plt.legend(loc='best')

结果:

4、保存为图像

plt.savefig("vis.jpg")
plt.savefig("test.png", dpi=120) # 指定分辨率

5、处理中文乱码问题

x = ['南京', '上海', '成都', '香港']
y = [60600, 53000, 50400, 52000]
plt.plot(x, y)
plt.title("中文乱码")
plt.show()

其实只需要配置下后台字体即可。

x = ['南京', '上海', '成都', '香港']
y = [60600, 53000, 50400, 52000]

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.plot(x, y)
plt.title("中文正常")
plt.show()

6、添加注释

def test1():
    x = np.linspace(0, 2 * np.pi, 50)
    y = np.sin(x)

    plt.plot(x, y, label="sin(x)")
    plt.legend(loc='best')

    #####添加注释######
    # 需要对特定的点进行标注,我们可以使用 plt.annotate 函数来实现。
    # 这里我们要标注的点是 (x0, y0) = (π, 0)。
    # 我们也可以使用 plt.text 函数来添加注释。
    x0 = np.pi
    y0 = 0

    # 画出标注点
    plt.scatter(x0, y0, s=50)
    plt.annotate('sin(np.pi)=%s' % y0, xy=(np.pi, 0), xycoords='data', xytext=(+30, -30),
                 textcoords='offset points', fontsize=16,
                 arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.2"))
    # 对于 annotate 函数的参数,做一个简单解释:
    # 'sin(np.pi)=%s' % y0 代表标注的内容,可以通过字符串 %s 将 y0 的值传入字符串;
    # 参数 xycoords='data' 是说基于数据的值来选位置;
    # xytext=(+30, -30) 和 textcoords='offset points' 表示对于标注位置的描述 和 xy 偏差值,即标注位置是 xy 位置向右移动 30,向下移动30;
    # arrowprops 是对图中箭头类型和箭头弧度的设置,需要用 dict 形式传入。

    plt.text(0.5, -0.25, "sin(np.pi) = 0", fontdict={'size': 18, 'color': 'r'})
    plt.show()

结果:

7、figure

在matplotlib中,整个图表为一个figure对象。其实对于每一个弹出的小窗口就是一个Figure对象。下面演示如何在一个代码中创建多个Figure对象,也就是多个小窗口。

def test2():
    x = np.linspace(-1, 1, 50)
    y1 = x ** 2
    y2 = x * 2
    # 这个是第一个figure对象,下面的内容都会在第一个figure中显示
    plt.figure()
    plt.plot(x, y1)

    # 这里第二个figure对象
    plt.figure()
    plt.plot(x, y2)
    plt.show()


figure参数:

plt.figure(num = 3,figsize = (10,5)) # 指定新创建的为figure3
plt.figure("test") # 指定新创建的为test

参考文章:

1、Python–Matlibplot画图功能演示


https://blog.csdn.net/qq_25948717/article/details/82724686

2、Python-matplotlib画图


https://zhuanlan.zhihu.com/p/33270402



版权声明:本文为weixin_34910922原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。