Сюжетно: Как переименовать элементы легенды сюжетно-выраженной линейчатой диаграммы?

#python #plotly #bar-chart #legend #plotly-express

Вопрос:

Я использую этот пример кода, приведенный на веб-сайте plotly.

 import plotly.express as px
long_df = px.data.medals_long()
fig = px.bar(long_df, x="nation", y="count", color="medal", title="Long-Form Input")
fig.show()
 

Это дает сюжет, как показано ниже.

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

Как я могу переименовать легенды, чтобы заменить золото, серебро и бронзу на первую, вторую и третью?

Ответ №1:

сопоставьте данные с нужными вам значениями

 import plotly.express as px
long_df = px.data.medals_long()
fig = px.bar(long_df, x="nation", y="count", 
             color=long_df["medal"].map({"gold":"first","silver":"second","bronze":"third"}), 
             title="Long-Form Input")
fig.show()

 

Ответ №2:

Я часто использую этот подход

 fig.for_each_trace(lambda t: t.update(name = newnames[t.name]))
 

где имена-это dict :

 newnames = {'gold':'1', 'silver': '2', 'bronze':'3'}
 

Сюжет:

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

Полный код:

 import plotly.express as px
long_df = px.data.medals_long()
fig = px.bar(long_df, x="nation", y="count", color="medal", title="Long-Form Input")

newnames = {'gold':'1', 'silver': '2', 'bronze':'3'}
fig.for_each_trace(lambda t: t.update(name = newnames[t.name]))

fig.show()