gpt4 book ai didi

python - Pyplot 用轴移动原点

转载 作者:行者123 更新时间:2023-11-30 22:50:46 25 4
gpt4 key购买 nike

我有一些想要创建的绘图的代码:

import numpy as np
import matplotlib.pyplot as plt

# data
X = np.linspace(-1, 3, num=50, endpoint=True)
b = 2.0
Y = X + b

# plot stuff
fig = plt.figure(figsize=(8,6))
ax = fig.add_subplot(1, 1, 1)
ax.set_title('linear neuron')

# move axes
ax.spines['left'].set_position(('axes', 0.30))
# ax.spines['left'].set_smart_bounds(True)
ax.yaxis.set_ticks_position('left')

ax.spines['bottom'].set_position(('axes', 0.30))
# ax.spines['bottom'].set_smart_bounds(True)
ax.xaxis.set_ticks_position('bottom')

ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

# title
title = ax.set_title('Linear Neuron', y=1.10)

# axis ticks
# ax.set_xticklabels([0 if item == 0 else '' for item in X])
# ax.set_yticklabels([])
# for tick in ax.xaxis.get_majorticklabels():
# tick.set_horizontalalignment('left')
# ax.tick_params(axis=u'both', which=u'both',length=0)

# axis labels
ax.xaxis.set_label_coords(1.04, 0.30 - 0.025)
ax.yaxis.set_label_coords(0.30 - 0.03, 1.04)
y_label = ax.set_ylabel('output')
y_label.set_rotation(0)
ax.set_xlabel('input')

# ax.get_xaxis().set_visible(False)
# ax.get_yaxis().set_visible(False)

# grid
ax.grid(True)


ax.plot(X, Y, '-', linewidth=1.5)

fig.tight_layout()
fig.savefig('plot.pdf')

在此图中,x 轴和 y 轴发生了移动。然而,从刻度和刻度标签可以看出,原点并没有随着 then 移动。

如何才能始终随 x 轴和 y 轴移动原点?

我想这与简单地查看绘图的另一个区域相同,因此 x 轴和 y 轴位于左下角,但不像通常那样位于角落。

可视化这一点:

current situation

我想要什么:

enter image description here

箭头指向 x 轴和 y 轴交点的位置,我想要原点 (0|0)。在虚线箭头指向上方的地方,我希望线向上移动,以便当原点移动时,它在数学上仍然处于正确的位置。

(最终的努力结果可见 here )

最佳答案

您已经对每件事的去向进行了大量手动调整,因此该解决方案不太可移植。但这里是:从原始代码中删除 ax.spines['bottom'].set_positionax.xaxis.set_label_coords 调用,然后添加以下内容:

ax.set_ylim(-1, 6)
ax.spines['bottom'].set_position('zero')
xlabel = ax.xaxis.get_label()
lpos = xlabel.get_position()
xlabel.set_position((1.04, lpos[1]))

“调出原点”实际上只需 ax.set_ylim 即可完成,剩下的就是将标签放置在您想要的位置。

关于python - Pyplot 用轴移动原点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39244380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com