memo: Python | Matplotlib

画竖直和水平的分割线

1
2
3
plt.vlines(x, ymin, ymax)

plt.hlines(y, xmin, xmax)

例:plt.vlines(0, 0, 0.5, colors = "r", linestyles = "dashed")

纵坐标刻度变文字

参考Matplotlib:设置坐标轴范围,刻度,位置,自定义刻度名称,添加数据标签

1
2
3
# 把纵坐标-2变为文字“really bad"

plt.yticks([-2, -1.8, -1, 1.22, 3],[r'$really\ bad$', r'$bad$', r'$normal$', r'$good$', r'$really\ good$'])

坐标显示范围

1
2
3
#设置坐标轴范围
plt.xlim((-5, 5))
plt.ylim((-2, 2))

坐标轴设置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
ax = plt.gca()

# 设置上边和右边无边框
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

# 设置x坐标刻度数字或名称的位置
ax.xaxis.set_ticks_position('bottom')

# 设置边框位置
ax.spines['bottom'].set_position(('data', 0))

带箭头的x-y坐标系

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import matplotlib.pyplot as plt
import numpy as np
import math
# 引入axisartist工具
import mpl_toolkits.axisartist as axisartist

# 创建画布
# fig = plt.figure(figsize=(8,8))
fig = plt.figure(dpi = 100)

# 使用axisartist.Subplot 方法创建一个绘图区对象 ax
ax = axisartist.Subplot(fig, 111)

# 将绘图区对象添加到画布中
fig.add_axes(ax)

# 设置绘图区原来所有坐标轴隐藏
ax.axis[:].set_visible(False)

# 添加新的坐标轴 
ax.axis["x"] = ax.new_floating_axis(0,0) #第一个0代表水平直线,第二个0代表直线经过0点
ax.axis["y"] = ax.new_floating_axis(1,0) #1代表竖直直线,0代表直线经过0点

# 给 x轴,y轴 加上箭头
ax.axis["x"].set_axisline_style("->",size =1.0)#空心箭头
ax.axis["y"].set_axisline_style("-|>",size=1.0)#实心箭头

# 设置刻度显示方向
ax.axis["x"].set_axis_direction("top")
ax.axis["y"].set_axis_direction("right")

# 绘制曲线:

两点连线

1
plt.plot([0,6],[0,0.5])

箭头

1
plt.arrow(0,0,6,0.5,head_width=0.1,head_length=0.1,overhang=1,ec="deepskyblue",linestyle=":")

用注释画箭头

1
2
3
ax=plt.gca()
ax.annotate("隐逝波", xy=(0,0), xytext=(6,0.5),
            arrowprops=dict(arrowstyle="<-", color="deepskyblue", linestyle=":") )

隐藏坐标轴

1
plt.xticks([]), plt.yticks([]) # 隐藏x和y轴

坐标轴标签

函数原型及参数 matplotlib.pyplot.xlabel(xlabel, fontdict=None, labelpad=None, *, loc=None, **kwargs)

  • xlabel:类型为字符串,即标签的文本。
  • labelpad:类型为浮点数,默认值为None,即标签与坐标轴的距离。
  • loc:取值范围为{‘left’, ‘center’, ‘right’},默认值为rcParams[“xaxis.labellocation”](‘center’),即标签的位置。
  • **kwargs:Text 对象关键字属性,用于控制文本的外观属性,如字体、文本颜色等。