在seaborn中绘制我自己的pd.dataframe并尝试重新定位轴时——轴消失了

问题描述 投票:0回答:1

我的问题是我想绘制数据,并希望 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()

我得到下图,根本没有 x 轴

这是怎么回事以及如何解决?

seaborn axis
1个回答
0
投票

解决方案:

而不是

ax.spines['left'].set_position(('data', 0))
ax.spines['bottom'].set_position(('data',0))

ax.set_xlim(0,1000)

© www.soinside.com 2019 - 2024. All rights reserved.