英文:
How to use matplotlib log scale in a graphic with two y axes?
问题
# Criar figura e eixos
fig, ax1 = plt.subplots()
# Configurar o primeiro eixo (temperatura) e todas as curvas em função desse eixo
ax1.set_xlabel('Tempo (s)')
ax1.set_ylabel('Temperaturas (°C)')
ax1.plot(df["Tempo"], df["Temp. Forno"], color='tab:red', label='Forno')
ax1.plot(df["Tempo"], df["ViewPort"], color='tab:orange', label='ViewPort')
ax1.plot(df["Tempo"], df["Água Flange"], color='tab:olive', label='Água Flange')
ax1.plot(df["Tempo"], df["Flange Inox"], color='tab:purple', label='Flange Inox')
ax1.plot(df["Tempo"], df["Tampa"], color='tab:pink', label='Tampa')
ax1.tick_params(axis='y')
# Criar o segundo eixo (pressão)
ax2 = ax1.twinx()
ax2.set_ylabel('Pressão (mBar)')
ax2.plot(df["Tempo"], df["PressaoAlta"], color='tab:blue')
ax2.tick_params(axis='y')
# Abaixo segue uma tentativa de tornar o segundo eixo uma escala logarítmica
ax2.set_yscale('log')
ax2.yaxis.set_major_locator(ticker.LogLocator(base=10.0))
ax2.yaxis.set_major_formatter(ticker.ScalarFormatter(useMathText=True, useOffset=False))
# Adicionar legenda
ax1.legend(bbox_to_anchor=(1.2, 1.1), loc='upper left')
ax2.legend(['Pressão'], bbox_to_anchor=(1.435, 0.75), loc='upper right')
# Exibir o gráfico
plt.savefig('grafico')
plt.show()
英文:
# Criar figura e eixos
fig, ax1 = plt.subplots()
# Configurar o primeiro eixo (temperatura) e todas as curvas em função desse eixo
ax1.set_xlabel('Tempo (s)')
ax1.set_ylabel('Temperaturas (ºC)')
ax1.plot(df["Tempo"], df["Temp. Forno"], color='tab:red', label='Forno')
ax1.plot(df["Tempo"], df["ViewPort"], color='tab:orange', label='ViewPort')
ax1.plot(df["Tempo"], df["Água Flange"], color='tab:olive', label='Água Flange')
ax1.plot(df["Tempo"], df["Flange Inox"], color='tab:purple', label='Flange Inox')
ax1.plot(df["Tempo"], df["Tampa"], color='tab:pink', label='Tampa')
ax1.tick_params(axis='y')
# Criar o segundo eixo (pressão)
ax2 = ax1.twinx()
ax2.set_ylabel('Pressão (mBar)')
ax2.plot(df["Tempo"], df["PressaoAlta"], color='tab:blue')
ax2.tick_params(axis='y')
#Abaixo segue uma tentativa de tornar o segundo eixo uma escala logarítmica
ax2.set_yscale('log')
ax2.yaxis.set_major_locator(ticker.LogLocator(subs=(1.0, 2.5, 5.0)))
ax2.yaxis.set_major_formatter(ticker.ScalarFormatter())
# Adicionar legenda
ax1.legend(bbox_to_anchor=(1.2, 1.1), loc='upper left')
ax2.legend(['Pressão'], bbox_to_anchor=(1.435, 0.75), loc='upper right')
# Exibir o gráfico
plt.savefig('grafico')
plt.show()
As we can see in the graphic, the right column is 0.0001, for example, and I want this and the subs in base equal to 10, like 10^-4.
I want the code to show the ax2 in scientific notation in log scale on the graphic. What can I do?
答案1
得分: 0
根据将'y'轴设置为科学计数法,您可以使用ax2.ticklabel_format(axis="y", style="sci")
将轴设置为科学计数法。在答案中,他们使用了"both"
,这会将x轴和y轴都设置为科学计数法,但您只需要将其应用于y轴。
英文:
As per Set 'y' axis to scientific notation, you can set an axis to scientific notation using ax2.ticklabel_format(axis="y", style="sci")
. In the answer, they used "both"
, which sets both the x and y axes to scientific notation, but you only need to apply it to the y-axis.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论