Как изменить, чтобы ось x начиналась с большего значения до самого маленького в масштабе журнала? - PullRequest
1 голос
/ 24 октября 2019

У меня есть график, где начало значений x и y должно быть от 100. И ось x должна быть логарифмически масштабирована.

Я не могу инвертировать мою шкалу x, начинающуюся с 100, и перейти к0.

Мой код:

ax = df.plot(y ='ais_percent', x = 'rtcm_percent', color = 'firebrick')
ax.set_xscale("log")
ax.set_yscale("linear")

ax.invert_yaxis()
ax.invert_xaxis()
ax.set_xlim(1e2,0)

Это график, который я получаю:

enter image description here Шкала y верна, но выОсь х должна быть противоположной.

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Установка пределов (с помощью метода set_xlim()) сбрасывает invert_xaxis(). Поэтому вам нужно изменить порядок команд:

Вместо

ax.invert_xaxis()
ax.set_xlim(1e2,0)

используйте

ax.set_xlim(1e2,0)
ax.invert_xaxis()
0 голосов
/ 24 октября 2019

log (0) не определено. Измените

ax.set_xlim(1e2,0), например, на ax.set_xlim(1e2, 1e-300)

Ссылка, инвертирующая ось x, достаточно просто установить xlim для инвертирования. Так что ax.invert_xaxis() не требуется.

См., Например, следующий фрагмент:

import pandas as pd
import matplotlib.pyplot as plt

squareroots = [(i, i**0.5) for i in range(0, 100)]
squareroot_df = pd.DataFrame(squareroots, columns=['i', 'i^0.5'])

ax = squareroot_df.plot(x='i', y='i^0.5', color='firebrick')

ax.set_xscale('log')
# ax.invert_xaxis()  # not necessary
ax.set_xlim(1e2, 1e-50)

plt.show()
...