设定座标轴位置
使用 matplotlib 绘制图表时,除了固定四个边的矩形座标轴,也可以透过 spines() 方法设定座标轴位置,做出十字型座标的图表,这篇教学将会介绍如何设定图表座标轴的位置。
本篇使用的 Python 版本为 3.7.12,所有范例可使用 Google Colab 实作,不用安装任何软件 ( 参考:使用 Google Colab )
使用取得座标轴
参考“建立多个子图表 ( subplot、subplots )”一文,透过 subplot、subplots 方法,都可以建立单一子图表或多个子图表,下方列出针对不同的建立方法,对应不同取得座标轴的方式:
subplot() 建立的子图表,使用 gca() 获取目前图表上的座标轴。
import matplotlib.pyplot as plt x = [1,2,3,4,5] fig = plt.figure() plt.subplot(221) plt.plot(x) ax = plt.gca() print(ax) # AxesSubplot(0.125,0.536818;0.352273x0.343182)subplots() 建立的子图表,可直接呼叫设定座标轴。
import matplotlib.pyplot as plt x = [1,2,3,4,5] fig, ax = plt.subplots(2,2) print(ax[0][0]) plt.show() # AxesSubplot(0.672059,0.125;0.227941x0.222059)
使用 spines() 设定座标轴样式
取得座标轴之后,就能使用 spines 设定座标轴,spines 是一个字典型态,spines['top'] 表示上方座标轴,spines['bottom'] 表示下方座标轴,spines['left'] 表示左侧座标轴,spines['right'] 表示右侧座标轴,常用的设定方法如下:
|方法|参数|说明| |--|--| |set_color|color|设定座标轴颜色。| |set_position|position|设定座标轴位置,使用 ('axes', float) 或 ('data', float) 方式呈现,float 数值表示座标轴的位置,如果设定 'axes' 则范围是 0 ( 左 ) ~ 1 ( 右 )。| |set_visible|bool|是否显示座标轴,默认 True 显示座标轴,设定 False 隐藏座标轴。|
下方的例子,会将上方与右侧的座标轴隐藏,接着将左侧与下方的座标轴置中。
import matplotlib.pyplot as plt
x = [0,1,2,3,4,5]
fig, ax = plt.subplots()
ax.plot(x)
ax.set_xlim(-6,6)
ax.set_ylim(-6,6)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['bottom'].set_position(('axes',0.5))
ax.spines['left'].set_position(('axes',0.5))
plt.show()
下方的程序换成 subplot() 的做法,执行后结果也会相同。
import matplotlib.pyplot as plt
x = [0,1,2,3,4,5]
fig = plt.figure()
plt.subplot()
plt.plot(x)
plt.xlim(-6,6)
plt.ylim(-6,6)
ax = plt.gca()
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['bottom'].set_position(('axes',0.5))
ax.spines['left'].set_position(('axes',0.5))
plt.show()
微信扫码关注
抖音扫码关注