получение разного ответа в разных ячейках jupyter [график sns]

#matplotlib #jupyter-notebook #data-visualization #seaborn

#matplotlib #jupyter-записная книжка #визуализация данных #seaborn

Вопрос:

допустим, у нас есть df, подобный приведенному ниже

просмотр df

Я построил график с использованием seaborn. После этого я извлек данные xticks. всякий раз, когда я запускаю в следующей ячейке, он показывает правильный результат, но в той же ячейке отображается разница. выделены оба. в чем причина этого и как устранить.

ss результата

Код PFB: часть DF—>

    df={'A':48,'B':12,'C':86}
   df=pd.DataFrame(list(df.items()),columns=("name","score"))
   df['score']=df['score']/100
   df
  

часть построения графика —>

    fig, ax=matplotlib.pyplot.subplots(figsize=(10,2))

   g=sns.barplot(y='name',x='score',data=df,ax=ax)
   ax.set_xticks([0,0.25,0.5,0.75,1.0])
   ax.set_xticklabels(['0.00', 'bad','ok','good','v. good'])
   ax.get_xticklabels()[1]
  

повторное получение xticks в ячейке diff —->

    ax.get_xticklabels()[1]
  

Комментарии:

1. Пожалуйста, добавьте код и данные в виде текста, а не в виде изображения

Ответ №1:

Каким-то образом вам нужно использовать plt.show() перед вызовом ax.get_xticklabels() . Я предполагаю, что эта переменная не вычисляется до тех пор, пока не будет сгенерирован график. Итак, если вы запустите следующее в одной ячейке:

 fig, ax=matplotlib.pyplot.subplots(figsize=(10,2))

g=sns.barplot(y='name',x='score',data=df,ax=ax)
ax.set_xticks([0,0.25,0.5,0.75,1.0])
ax.set_xticklabels(['0.00', 'bad','ok','good','v. good'])
for elem in ax.get_xticklabels():
    print(elem)
plt.show()
for elem in ax.get_xticklabels():
    print(elem)
  

Вы получаете следующее:

введите описание изображения здесь

Комментарии:

1. Спасибо, это сработало с plt.show () в Jupyter . но ‘matplotlib.use(‘Agg’) также присутствует в вопросе, поэтому plt.show() там не работает . есть ли какой-либо другой способ, которым мы можем вычислить переменную?

2. Что вы подразумеваете под «‘matplotlib.use(‘Agg’) также присутствует в вопросе»? Отредактируйте свой вопрос, если вам это нужно, пожалуйста

3. Пожалуйста, проигнорируйте мой последний комментарий .. это была другая проблема.. ваш предыдущий ответ сработал. Спасибо

Ответ №2:

Я не смог воспроизвести вашу проблему с помощью предоставленного вами кода. Можете ли вы повторить попытку и включить индикаторы выполнения ячейки на левом краю?

введите описание изображения здесь

Комментарии:

1. Возможно, это также связано с конфигурацией matplotlib (например, в %matplotlib inline случае)