我的问题是我想绘制数据,并希望 X 轴和 Y 轴相交于 (0,0)。但是当我这样做
ax.spines['bottom'].set_position(('data',0))
时,X 轴就消失了。
以下代码片段用于重现错误: 以下是我如何使用数据创建数据框:
#### Create Pandas DF
col_names = ['algorithm', 'seed', 'iteration', 'performance']
df = pd.DataFrame(columns = col_names)
df['algorithm'] = [f'Algorithm {i}' for i in range(num_algos)
for _ in range(num_seeds)
for _ in range(num_iterations)]
df['seed'] = [i for i in range(num_seeds)
for _ in range(num_iterations)] * num_algos
iters = num_algos * num_seeds
df['iteration'] = np.linspace(0, 1000, num_iterations).tolist() * iters
df['performance'] = np.random.rand(iters * num_iterations)
如果我正常绘图,书脊位置没有变化:
ax = sns.lineplot(data = df,
x ='iteration',
y = 'performance',
hue = 'algorithm',
style = 'algorithm'
)
plt.show()
我得到以下内容
但是,由于我想重新定位轴,所以我尝试以下代码:
ax = sns.lineplot(data = df,
x ='iteration',
y = 'performance',
hue = 'algorithm',
style = 'algorithm'
)
ax.spines['left'].set_position(('data', 0))
ax.spines['bottom'].set_position(('data',0))
plt.show()
这是怎么回事以及如何解决?
解决方案:
而不是
ax.spines['left'].set_position(('data', 0))
ax.spines['bottom'].set_position(('data',0))
做
ax.set_xlim(0,1000)