Matplotlib: как масштабировать ось y в соответствии с y-значением? [Дубликат]

Есть несколько хороших примеров для этого в R Wiki . Я украду пару здесь:

Метод слияния

Поскольку ваши ключи называются одинаковыми, короткий способ сделать внутреннее соединение - merge ():

merge(df1,df2)

полное внутреннее соединение (все записи из обеих таблиц) может быть создано с помощью ключевого слова «все»:

merge(df1,df2, all=TRUE)

левое внешнее соединение df1 и df2:

merge(df1,df2, all.x=TRUE)

правое внешнее объединение df1 и df2:

merge(df1,df2, all.y=TRUE)

вы можете перевернуть их, пощекотать их и протрите их, чтобы получить другие два внешних соединения, о которых вы спрашивали:)

Метод подстроки

Левое внешнее соединение с df1 слева с использованием метода подстроки будет:

df1[,"State"]<-df2[df1[ ,"Product"], "State"]

Можно создать и другую комбинацию внешних соединений путем макетирования примера нижнего нижнего соединения. (да, я знаю, что это эквивалент слова «Я оставлю это как упражнение для читателя ...»)

34
задан Hadi 21 April 2014 в 14:32
поделиться

2 ответа

try

plt.yscale('log', nonposy='clip')

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.yscale

Проблема заключается в том, нижняя часть баров находится в точке y = 0, а по умолчанию - маскировать недействительные точки (log(0) -> undefined) при выполнении преобразования журнала (было обсуждение изменения этого, но я не помню, каким образом он пошел), поэтому, когда он пытается нарисовать прямоугольники для вашего штрихового графика, нижний край замаскирован -> нет прямоугольников.

65
ответ дан tacaswell 21 August 2018 в 20:59
поделиться
  • 1
    Спасибо за ответ. Решение, которое вы предложили, решило исчезнувшие бары, но другая «ошибка» затем всплыли: все метки оси y-логарифма были нанесены поверх друг друга. Последняя проблема была решена путем комментирования «ax.set_ylim (0, 30)». линия. – mannaroth 31 July 2013 в 08:49
  • 2
    да, потому что 0 в пределе подрезается до некоторого очень небольшого числа, поэтому у вас есть необоснованное количество десятилетий. вместо этого используйте ax.set_ylim(1, 30). – tacaswell 31 July 2013 в 12:39
  • 3
    Указание nonposy = 'clip' сделал трюк! – krinker 24 January 2018 в 16:58

np.logspace возвращает бины в [1-10], логарифмически разнесенные - в моем случае xx является npvector> 0, поэтому следующий код делает трюк

logbins=np.max(xx)*(np.logspace(0, 1, num=1000) - 1)/9
hh,ee=np.histogram(xx, density=True, bins=logbins)
3
ответ дан Sport 21 August 2018 в 20:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: