python 如何巧妙地使用这种科学记数法?

uklbhaso  于 2022-12-21  发布在  Python
关注(0)|答案(3)|浏览(190)

我在python中使用plotly,我尝试在X轴和Y轴中使用这些类型的刻度:10-3、10-4、10-5,等等。

有什么建议或推荐阅读吗?
我得到这个:

d5vmydt9

d5vmydt91#

我相信你会得到logartihmic axes

import plotly.express as px
df = px.data.gapminder().query("year == 2007")

fig = px.scatter(df, x="gdpPercap", y="lifeExp", hover_name="country", log_x=True)
fig.show()
pftdvrlh

pftdvrlh2#

这一直困扰着我一段时间,这里是我找到的最好的解决方案:
TLDR,您可以使用HTML格式来确保指数是上标,并使用array模式来传递字符串,以便绘制刻度标签。

import plotly.express as px
import numpy as np
df = px.data.gapminder().query("year == 2007")

fig = px.scatter(df, x="gdpPercap", y="lifeExp", hover_name="country", log_x=True)
tickvals = np.logspace(3,6, num=4)
print(tickvals)

def format_tick(n: float):
    m, e = f"{n:.0e}".split("e")
    e = int(e)
    return f"{m} x 10<sup>{e}</sup>"

ticktext = [format_tick(t) for t in tickvals]
print(ticktext)

fig.update_layout(
    xaxis = dict(
        tickmode = 'array',
        tickvals = tickvals,
        ticktext = ticktext,
    )
)
fig.show()
disho6za

disho6za3#

我也在搜索这个功能,并在这个其他答案中找到了解决方案:
https://stackoverflow.com/a/56742105/418875
您应该将exponentformat设置为power选项。这将打印如下所示的刻度:

相关问题