Python--数据可视化基础(matplotlib)

文章目录

    • 1. 数据可视化
    • 2. 基本绘图 API
      • 2.1 plot()
      • 2.2 hlines() 绘制水平线
      • 2.3 vlines() 绘制垂直线
      • 2.4 linspace() sin() cos()
    • 3. 设置线型线宽
    • 4. 设置坐标刻度
      • 4.1 坐标轴刻度标签文本以 latex 格式显示
    • 5. 设置坐标轴
    • 6. 设置图例
    • 7. 设置特殊点
    • 8. 设置备注
      • 可设置线颜色的单词
      • latex
      • 图形特殊点的点型
      • 特殊点备注的箭头样式


1. 数据可视化

数据可视化指的是使用图形的方式展现数据分布规律。

Python--数据可视化基础(matplotlib)_第1张图片

2. 基本绘图 API

2.1 plot()

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4, 5])
y = np.array([12, 22, 43, 34, 25])

# 绘图函数
# 需要传入两个数组类型的参数
# 第一个参数为 x 轴上的坐标,第二个参数为 y 轴上的坐标
# 两个数组对应位置的 x 与 y 组成一个点的坐标
# 两个数组在形式上需要相同
plt.plot(x, y)
# 显示绘制的图形,会阻塞程序的运行
plt.show()

Python--数据可视化基础(matplotlib)_第2张图片

传入的数组参数只有一个的情况:

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4, 5])
y = np.array([12, 22, 43, 34, 25])

# 绘图函数
# 如果传入的数组参数为一个
# 则传入的数组参数会被默认是 y 轴的坐标,在 x 轴上的取值会默认进行取值
plt.plot(x)
plt.plot(y)
# 显示绘制的图形,会阻塞程序的运行
plt.show()

Python--数据可视化基础(matplotlib)_第3张图片

2.2 hlines() 绘制水平线

import numpy as np
import matplotlib.pyplot as plt

# 第一个参数为水平线的 y 值
# 第二个参数为水平线的开始位置
# 第三个参数为水平线的结束位置
plt.hlines(20, 2, 4)
plt.show()

Python--数据可视化基础(matplotlib)_第4张图片

2.3 vlines() 绘制垂直线

import numpy as np
import matplotlib.pyplot as plt

# 第一个参数为垂直线的 x 值
# 第二个参数为垂直线的开始位置
# 第三个参数为垂直线的结束位置
plt.vlines(20, 2, 4)
plt.show()

Python--数据可视化基础(matplotlib)_第5张图片

2.4 linspace() sin() cos()

import numpy as np
import matplotlib.pyplot as plt

# linspace() 线性拆分
# 从 0 到 π 之间取 1000 个点
# np.pi π
x = np.linspace(0, 2*np.pi, 1000)
# 求 x 中每个点对应 sin 值
sinx = np.sin(x)

plt.plot(x, sinx)
plt.show()

Python--数据可视化基础(matplotlib)_第6张图片

import numpy as np
import matplotlib.pyplot as plt

# linspace() 线性拆分
# 从 0 到 π 之间取 1000 个点
# np.pi π
x = np.linspace(0, 2*np.pi, 1000)
# 求 x 中每个点对应 cos 值
cosx = np.cos(x)

plt.plot(x, cosx)
plt.show()

Python--数据可视化基础(matplotlib)_第7张图片

3. 设置线型线宽

在使用 plot() 绘图时,还可以传入如下参数,来设置线型线宽:

参数 说明
linestyle 设置线型:‘-’(实线) ‘- -’(虚线) ‘-.’ ‘:’
linewidth 线宽(数字)
color 颜色 ( #rrggbb 或 颜色单词 或 (r, g, b, a) )
alpha 设置透明度(0-1)
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 1000)
sinx = np.sin(x)
cosx = np.cos(x)

plt.plot(x, sinx, linestyle=':', linewidth=2, alpha=0.7, color='black')
plt.plot(x, cosx, linestyle='-.', linewidth=3, alpha=1, color='#12ff12')
plt.show()

Python--数据可视化基础(matplotlib)_第8张图片

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 1000)
sinx = np.sin(x)
cosx = np.cos(x)

# color=(red, green, blue, alph)
# 四个取值为 0-1
plt.plot(x, sinx, color=(0, 0.5, 0.7, 0.8))
plt.show()

Python--数据可视化基础(matplotlib)_第9张图片

4. 设置坐标刻度

设置 x 轴的坐标刻度:

xticks(x_val_list, x_text_list)
x_val_list: x 轴刻度值序列
x_text_list: x 轴刻度标签文本序列[可选]

设置 y 轴的坐标刻度:

yticks(y_val_list, y_text_list)
y_val_list: y 轴刻度值序列
y_text_list: y 轴刻度标签文本序列[可选]

Python--数据可视化基础(matplotlib)_第10张图片

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 1000)
sinx = np.sin(x)
cosx = np.cos(x)

# 修改 x 轴的刻度
names = ['0', 'π/2', 'π', '3π/2', '2π']
plt.xticks([0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi], names)

plt.plot(x, sinx, linestyle=':', linewidth=2, alpha=0.7, color='black')
plt.plot(x, cosx, linestyle='-.', linewidth=3, alpha=1, color='#12ff12')
plt.show()

Python--数据可视化基础(matplotlib)_第11张图片

4.1 坐标轴刻度标签文本以 latex 格式显示

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 1000)
sinx = np.sin(x)
cosx = np.cos(x)

# 修改 x 轴的刻度
# latex 格式的字符串写在 $ $ 中间
# r'' 原始字符串
# \frac{分子}{分母} 分数形式
names = ['0', r'$\frac{\pi}{2}$', 'π', r'$\frac{3\pi}{2}$', '2π']
plt.xticks([0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi], names)

plt.plot(x, sinx, linestyle=':', linewidth=2, alpha=0.7, color='black')
plt.plot(x, cosx, linestyle='-.', linewidth=3, alpha=1, color='#12ff12')
plt.show()

Python--数据可视化基础(matplotlib)_第12张图片

5. 设置坐标轴

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 1000)
sinx = np.sin(x)
cosx = np.cos(x)

# 修改 x 轴的刻度
names = ['0', r'$\frac{\pi}{2}$', 'π', r'$\frac{3\pi}{2}$', '2π']
plt.xticks([0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi], names)

# 设置坐标轴
# 绘制出来的图形四个边都是坐标轴
# 先获取当前图形的坐标轴
ax = plt.gca()

# 获取其中某个坐标轴
# ax.spines['坐标轴名']

# set_color() 设置坐标轴的颜色 颜色的书写可以采用上面设置线颜色的方式
# set_color('none') 不显示坐标轴

# left - 左轴,right - 右轴,bottom - 下轴,top - 上轴

# 获取上轴和右轴,取消上轴和右轴的显示
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')

# 设置坐标轴的位置
# 需要传入 2 个元素组成的元组为参数
# 第一个元素为移动坐标轴的参照类型,一般为 ’data‘ 以数据的值作为移动参照值
# 第二个元素为参照值
# set_position((参照类型, 参照值))
ax.spines['left'].set_position(('data', 0))
ax.spines['bottom'].set_position(('data', 0))

# 绘制图形
plt.plot(x, sinx, linestyle=':', linewidth=2, alpha=0.7, color='black')
plt.plot(x, cosx, linestyle='-.', linewidth=3, alpha=1, color='#12ff12')
plt.show()

Python--数据可视化基础(matplotlib)_第13张图片

6. 设置图例

# 在绘制图形的时候可以设置图例
plot( x, y, label='' )
# label: 关键字参数,值为字符串,支持 latex 排版语法的字符串
# 设置图例的位置(不设置,会默认寻找一个合适的位置放图例)
legend( loc='' )
# loc: 关键字参数

loc 的取值:

Python--数据可视化基础(matplotlib)_第14张图片

# 绘制图形
plt.plot(x, sinx, linestyle=':', linewidth=2, alpha=0.7, color='black', label='y = sin(x)')
plt.plot(x, cosx, linestyle='-.', linewidth=3, alpha=1, color='#12ff12', label='y = cos(x)')

# 要调用该方法,图例才会显示
plt.legend()

plt.show()

Python--数据可视化基础(matplotlib)_第15张图片

plt.legend(loc='upper right')
# 取对应的数字编码,效果一样

Python--数据可视化基础(matplotlib)_第16张图片

7. 设置特殊点

plt.scatter(
    x,              # 所有需要标注点的水平坐标组成的序列
    y,              # 所有需要标注点的垂直坐标组成的序列
    marker='',      # 点型
    s='',           # 点的大小, 取值:数字
    edgecolors='',  # 边缘色
    facecolor='',   # 填充色
    zorder=3        # 绘制图层编号(点和线之间的上下层关系) 数字大的在上
)
# 绘制特殊点
xs, ys = [np.pi, np.pi], [0, -1]
plt.scatter(
    xs,
    ys,
    marker='D',
    edgecolors='red',
    facecolor='blue',
    s=80,
    zorder=2,
    label='Point' # 设置特殊点的图例
)

# 图例
plt.legend(loc=1)

plt.show()

Python--数据可视化基础(matplotlib)_第17张图片

8. 设置备注

# 在图表中为某个点添加备注。
# 包含备注文本,备注箭头等图像的设置。
plt.annotate(
    '', 					# 备注中显示的文本内容
    xycoords='data',		# 备注目标点所使用的坐标系
    # data 表示数据坐标系
    xy=(x, y),				# 备注目标点的坐标
    textcoords='offset points',# 备注文本所使用的坐标系
    # offset points 参照点的偏移坐标系,以备注目标点为原点建立参照坐标系
    xytext=(x, y),			# 备注文本的坐标
    fontsize=14,			# 备注文本的字体大小
    arrowprops=dict() 		# 箭头样式,值为字典
)

# arrowprops 字典参数的常用key
arrowprops=dict(
    arrowstyle='',	    #定义箭头样式
    connectionstyle=''	# 定义连接线的样式
)

其他更多参数可以参考:
【Matplotlib 可视化之箭头与标注的高级应用】

【官方文档】

# 设置备注文本
plt.annotate(
    '(π, -1)',
    xycoords='data',
    xy=(np.pi, -1),
    textcoords='offset points',
    xytext=(20, -30),
    fontsize=14,
    arrowprops=dict(
        arrowstyle='->',
        connectionstyle='angle3'
    )
)

# 图例
plt.legend(loc=1)

plt.show()

Python--数据可视化基础(matplotlib)_第18张图片

可设置线颜色的单词

Python--数据可视化基础(matplotlib)_第19张图片

latex

【在线 LaTeX 公式编辑器】

Python--数据可视化基础(matplotlib)_第20张图片Python--数据可视化基础(matplotlib)_第21张图片

图形特殊点的点型

Python--数据可视化基础(matplotlib)_第22张图片

特殊点备注的箭头样式

图片来源:
【Matplotlib 可视化之箭头与标注的高级应用】

Python--数据可视化基础(matplotlib)_第23张图片
Python--数据可视化基础(matplotlib)_第24张图片

你可能感兴趣的:(Python,python,matplotlib)