如何在Matplotlib中绘制图表内部的坐标轴线?

11
当我使用Matplotlib绘制数据时,默认情况下,坐标轴始终以框的形式绘制在图形周围。假设我正在绘制坐标轴限制为-2 < x < 2-2 < y < 2的数据,但我希望在这个图形区域内通过原点绘制坐标轴线,最好沿着这些坐标轴线放置刻度和刻度标签 - 而不是沿着外部边框。

当向我们提出需要编写代码解决的问题时,最好先给出一些示例代码,包括图表,并告诉我们您想要更改的内容。告诉我们您已经尝试过但没有成功的方法会很好,但不是必需的。 - cel
3
作为经常使用matplotlib的人,我认为这个问题很明确。 - Hannes Ovrén
2个回答

14

这在脊柱示例(旧链接)/ 脊柱位置演示(新链接)中有详细说明。

您将关闭右侧和顶部的脊柱(例如spines ['right'] .set_color('none')),并将左侧和底部的脊柱移动到零位置(例如spines['left'].set_position('zero'))。

import numpy as np
import matplotlib.pyplot as plt


fig = plt.figure()
x = np.linspace(-np.pi, np.pi, 100)
y = 2*np.sin(x)

ax = fig.add_subplot(111)
ax.set_title('zeroed spines')
ax.plot(x, y)
ax.spines['left'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_color('none')

# remove the ticks from the top and right edges
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')

在此输入图片描述


10

我至少能给出一个半完整的答案。 是的,你可以轻松地绘制坐标轴线。它就像

plt.axvline(0)
plt.axhline(0)
原始的坐标轴将保留,但可以使用plt.axis('off')关闭它。这也不会给你任何刻度标记。

谢谢,这至少帮了我一部分忙。我会尝试看看能否找到一种用勾号和标签装饰它们的方法。 - Thomas Arildsen
1
我建议查看matplotlib文档。如果您忽略 matplotlib.pyplot 模块而是查看“真正的”API,则可以使用matplotlib实现许多事情。绘制坐标轴是我自己几次想做但从未完全解决的事情。 - Hannes Ovrén

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接