matplotlib常见基础用法总结

前言

本文的例子要求您有numpy, pandas, matplotlib,如果没有,需要您

pip install numpy
pip install pandas
pip install matplotlib

如果下载速度太慢,请看我另一篇博客: pip镜像管理和npm镜像管理

然后每次使用numpy都需要import 一下,以下默认都有

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

这篇文章会给大家看几个例子。




格式字符串

格式字符串由颜色、标记、线三部分组成。
改图截取自 Python matplotlib.pyplot.plot格式字符串 ,这位博主总结的挺不错的。
在这里插入图片描述



例子1 :一幅图内画多个函数

import numpy as np
import matplotlib.pyplot as plt

"""
格式字符串中的顺序没有要求
color: g 绿色, b 蓝色, r 红色, m 酒红色
marker: o 圆圈标记, -横线标记, 1 三叉戟标记, p五边形标记
line: -实线, ..点和虚线交替, : 点线, --选线
"""
a = np.arange(10)
plt.plot(a, a * 1.5, 'go-',
         a, a ** 2, 'b-..',
         a, a * 5, 'r1:',
         a, np.sin(a), 'mp--')
plt.show()

在这里插入图片描述



例子2: 横纵坐标打标签

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(5)
y = x * 5
plt.plot(x, y)

plt.xticks(x, ('Tom', 'Dick', 'Harry', 'Sally', 'Sue'), rotation=90)
plt.yticks(y, ('A', 'B', 'C', 'D', 'E'), rotation=45)

plt.show()

在这里插入图片描述
这里横坐标的标签是plt.xticks() 第二个参数设置的,并且第三个参数rotation让标签逆时针旋转了90度。
纵坐标的标签是plt.yticks() 第二个参数设置的,并且第三个参数rotation让标签逆时针旋转了45度。



例子3: 给图打标题

import numpy as np
import matplotlib.pyplot as plt

# 第一个图
plt.title('Interesting Graph', fontstyle='italic', backgroundcolor='y')
plt.plot([1, 2, 3, 4, 5], [3, 6, 7, 9, 2], 'r--')
plt.show()

# 第二个图
x = np.arange(50)
y = x ** 5
plt.plot(x, y, 'b-')
plt.title('Interesting Graph', fontsize=22, fontweight='light', color='w', backgroundcolor='g')
plt.show()

第一个图:
第二个图
第二个图:
在这里插入图片描述



例子4: 给x轴和y轴打标题,并限制x轴和y轴取值范围

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 1000)
y = np.sin(x)

plt.plot(x, y, 'b:')

# 添加 x 轴和 y 轴标题
plt.xlabel('x-axis')
plt.ylabel('y-axis')

# 设置x轴和y轴的取值范围
plt.xlim(-1, 12)
plt.ylim(ymin=-1.5, ymax=1.5)

plt.show()

在这里插入图片描述




例子5: 标题显示中文并设置legend

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(5)
y = x * 5

# 为了显示中文,指定默认字体
plt.rcParams['font.sans-serif'] = ['SimHei']

plot1, = plt.plot([1, 2, 3, 4, 5], [3, 6, 7, 9, 2], 'r--')
plot2, = plt.plot(x, y, 'b-')
plot3, = plt.plot(x, y * 3, 'y:')
# 设置legend
plt.legend((plot1, plot2, plot3), ('plot1', 'plot2', 'plot3'))

plt.title('有趣的图', fontsize=22, fontweight='light', color='w', backgroundcolor='g')
plt.show()

在这里插入图片描述




例子6:分布条状图

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(1)
# 生成数据,以100组均值为70,方差为15的高斯分布数据为例
data = np.random.normal(70, 15, 100)
# 图一
plt.hist(data, bins=100, color='g', edgecolor=None, histtype='bar', rwidth=0.5)
plt.show()

# 图二
plt.hist(data, bins=50, color='b', edgecolor='r', histtype='step')
plt.show()

图一:
在这里插入图片描述
图二:
在这里插入图片描述我们来说说plt.hist() 的两个参数(该例子其他参数看一下图和代码应该就明白了):

  • x : (n,) array or sequence of (n,) arrays
    这个参数是指定每个bin(箱子)分布的数据,对应x轴,该例子传入了data
  • bins : integer or array_like, optional
    这个参数指定bin(箱子)的个数,也就是总共有几条条状图。该例子用了标量直接指定,也可以像下一个例子一样使用序列。




例子7:

本文用到的stock.csv格式:(截取了一部分给大家看)
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt

# 只用到第5列(开始以第1列算起的话)
close_price = np.loadtxt('stock.csv', delimiter=',',
                         usecols=(4,), unpack=True, skiprows=1)

bins = np.arange(9, 14, 0.2)


plt.hist(close_price, bins, rwidth=0.8)  # 条形宽度设为80%
# 为了显示中文,指定默认字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 设置刻度字体大小
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.xlabel('股票价格', fontsize=15)
plt.ylabel('出现次数', fontsize=15)
plt.title('收盘价分布直方图', fontsize=18)
plt.show()

在这里插入图片描述
这里说一下np.loadtxt() 的参数:
delimiter 是用于 指定读取文件中数据的分割符,usecols 是用于 指定需要读取的列,unpack 是用于 选择是否将数据进行向量输出, skiprows 是用于 选择跳过的行数。






例子8: 饼图

import matplotlib.pyplot as plt

labels = ['apple', 'pear', 'grape', 'waterma']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0.1, 0)  # 爆炸第二,三块饼,爆炸距离是半径的0.1。

plt.pie(sizes, explode=explode, labels=labels, autopct='%.1f%%', pctdistance=0.7, shadow=True, startangle=45)

plt.show()

在这里插入图片描述




例子9:绘制多个图形

# 绘制多个图形
import matplotlib.pyplot as plt
import numpy as np


def f(t):
    return np.exp(-t) * np.cos(2 * np.pi * t)


t1 = np.arange(0, 5, 0.1)
t2 = np.arange(0, 5, 0.02)

# 解决负号不能正常显示问题
plt.rcParams['axes.unicode_minus'] = False
# 解决中文不能显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']

# 设置整张图大小
plt.figure(12)


# 也可以写成 plt.subplot(221)
plt.subplot(2, 2, 1)
plt.title('图一', backgroundcolor='y')
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'r--')

plt.subplot(2, 2, 2)
plt.title('图二', backgroundcolor='g', color='w')
plt.plot(t2, np.cos(2 * np.pi * t2), 'r--')

plt.subplot(2, 1, 2)
plt.title('图三', backgroundcolor='b', color='w')
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])

plt.show()

在这里插入图片描述

其中,figure语法如下:

figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)

  • num:图像编号或名称,数字为编号 ,字符串为名称
  • figsize:指定figure的宽和高,单位为英寸;
  • dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80,其中1英寸等于2.5cm,A4纸是 21*30cm的纸张
  • facecolor:背景颜色
  • edgecolor:边框颜色
  • frameon:是否显示边框

这部分资料figure参数的解释来源于【Python】 【绘图】plt.figure()的使用 这篇文章。




结语

好了,matplotlib绝不是我这点篇幅就能说完的。它还有很多炫酷的用法,大家可以去一下网站看看:

感谢观看。

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页