我有一个简单的图,我想显示原点轴(x,y)。我已经有网格,但是我需要强调x,y轴。

这是我的代码:

x = linspace(0.2,10,100)
plot(x, 1/x)
plot(x, log(x))
axis('equal')
grid()

我看过this问题。接受的答案建议使用“轴脊”,并仅链接到一些示例。但是,该示例使用子图过于复杂。我无法在简单的示例中弄清楚如何使用“轴脊柱”。

最佳答案

使用subplots不太复杂,可能是棘刺。

笨,简单的方法:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.2,10,100)
fig, ax = plt.subplots()
ax.plot(x, 1/x)
ax.plot(x, np.log(x))
ax.set_aspect('equal')
ax.grid(True, which='both')

ax.axhline(y=0, color='k')
ax.axvline(x=0, color='k')

我得到:

(由于x的下限为零,因此看不到垂直轴。)

选择使用简单的刺
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.2,10,100)
fig, ax = plt.subplots()
ax.plot(x, 1/x)
ax.plot(x, np.log(x))
ax.set_aspect('equal')
ax.grid(True, which='both')

# set the x-spine (see below for more info on `set_position`)
ax.spines['left'].set_position('zero')

# turn off the right spine/ticks
ax.spines['right'].set_color('none')
ax.yaxis.tick_left()

# set the y-spine
ax.spines['bottom'].set_position('zero')

# turn off the top spine/ticks
ax.spines['top'].set_color('none')
ax.xaxis.tick_bottom()

使用seaborn的替代方法(我的最爱)
import numpy as np
import matplotlib.pyplot as plt
import seaborn
seaborn.set(style='ticks')

x = np.linspace(0.2,10,100)
fig, ax = plt.subplots()
ax.plot(x, 1/x)
ax.plot(x, np.log(x))
ax.set_aspect('equal')
ax.grid(True, which='both')
seaborn.despine(ax=ax, offset=0) # the important part here

使用书脊的set_position方法

这是 set_position method of spines的文档:



因此,您可以将左脊椎放置在以下任何位置:
ax.spines['left'].set_position((system, poisition))
其中system在该坐标系中的位置是“向外”,“轴”或“数据”,以及position

关于matplotlib - 在matplotlib图中显示原点轴(x,y),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25689238/

10-12 16:06