Как отобразить все метки оси Y на графике Matplotlib в логарифмическом масштабе - PullRequest
0 голосов
/ 08 октября 2019

Я создаю двухосную линейную диаграмму с помощью Matplotlib. На графике есть несколько рядов данных. У меня для оси Y задано логарифмическое масштабирование, потому что 2 серии имеют разные диапазоны.

import pandas as pd
import matplotlib.pyplot as plt

data = {  
    'Sales':[ 1141,     1356,   1604,   2165,   2494,   2933,   3445,   4198,   4287,   4760],
    'Profit': [10,  20,  30,    40,     50,     60,     70,     80,     90, 100     ],
    'Year':['2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019']
}

df = pd.DataFrame(data, columns = ['Sales', 'Profit',  'Year'])

# multiple line plot
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_yticklabels(df.Profit)
plt.plot(  'Year','Sales', data=df, marker='o', color='brown', linewidth=1)
plt.plot(  'Year','Profit', data=df, marker='o', color='green', linewidth=1, linestyle='dashed')
plt.legend()
plt.yscale("log")
plt.draw()

Выходная диаграмма показана с очень меньшим количеством меток оси y. Есть ли способ отобразить все метки значений осей Y в корзине? Или есть способ показать метки оси Y на более высокой частоте, чтобы упростить чтение значений?

enter image description here

Я пробовал это связанное решение Как отобразить все значения меток в matplotlib? , но не все метки y.

Я также пытался установить явные значения галочек y, как это, но все же метки сделалине появляется.

ax1 = fig.add_subplot(111)
ax1.set_yticklabels(np.arange(5000), minor=True)
...