matplotlib-坐标轴隐藏与移动之matplotlib.spines.Spines对象

2,502 阅读1分钟

其实具体说来官方文档里面没有具体提及文章里面的内容,但是出现了相关的代码。

在实例化一个Axes对象之后,可以通过调用:

Axes.spines["top/left/bottom/right"]

来获取上、左、底、右的坐标脊实例。

得到坐标脊实例之后,可以使用相关方法个性化设置坐标脊的性质。

set_visible设置坐标脊是否可见

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator,FuncFormatter

x = np.linspace(0, 2 * np.pi, 100)
y = 2 * np.sin(x)

fig,ax=plt.subplots(figsize=(8,8))

# 设置坐标轴样式
# --------------------------------------------------------
def major_tick(x,pos):    
if (x==0):    
    return "0"    
if(x==np.pi):    
    return "π"    
else:    
    return "%dπ"%(x/3.14)

ax.xaxis.set_major_locator(MultipleLocator(np.pi))
ax.xaxis.set_major_formatter(FuncFormatter(major_tick))
# --------------------------------------------------------

ax.spines["right"].set_visible(False)
ax.spines["top"].set_visible(False)

ax.plot(x,y)
plt.show()


set_position设置坐标轴的位置

import numpy as np
import matplotlib.pyplot as pl
tfrom matplotlib.ticker import MultipleLocator,FuncFormatte

rx = np.linspace(0, 2 * np.pi, 100)
y = 2 * np.sin(x)

fig,ax=plt.subplots(figsize=(8,8))
# 设置坐标轴样式
# --------------------------------------------------------
def major_tick(x,pos):    
if (x==0):     
   return "0"    
if(x==np.pi):     
   return "π"    
else:     
   return "%dπ"%(x/3.14)
ax.xaxis.set_major_locator(MultipleLocator(np.pi))
ax.xaxis.set_major_formatter(FuncFormatter(major_tick))
# --------------------------------------------------------

ax.spines["right"].set_visible(False)
ax.spines["top"].set_visible(False)
ax.spines["right"].set_position(("data",0))
ax.spines["bottom"].set_position(("axes",0.5))

ax.plot(x,y)

plt.show()


关于spine的方法还有很多,但是个人觉得作用大的还是上两个方法。