Опустить оси с facet_grid - plotnine

import pandas as pd
from plotnine import *

df=pd.DataFrame({'A':[1,1,1,1],'B':[1,9,5,11],'C':['x','x','y','y'],'D':['a','b','a','b']})
p=ggplot(df,aes('A','B'))
p + geom_bar(stat="identity") + facet_grid('D~C',scales='free_y')

Это нарисует оси как на левой, так и на правой сетке. Есть ли способ опустить оси на правой сетке, чтобы она была видна только слева? Я знаю, что мог бы использовать scales="fixed", но я бы хотел, чтобы они различались между строками.


person HappyPy    schedule 25.04.2018    source источник


Ответы (1)


Ошибочно иметь произвольные шкалы для всех панелей, но иметь отметки и метки только для некоторых из них. Но если вы действительно хотите, вам нужно заглянуть в Matplotlib для этого.

import pandas as pd
from plotnine import *

df=pd.DataFrame({'A':[1,1,1,1],'B':[1,9,5,11],'C':['x','x','y','y'],'D':['a','b','a','b']})
p=ggplot(df,aes('A','B'))
p = p + geom_bar(stat="identity") + facet_grid('D~C',scales='free_y')
fig, p = p.draw(return_ggplot=True)
for i, ax in enumerate(p.axs):
    if i % 2:
        ax.set_yticklabels([])
        ax.set_yticks([])
person has2k1    schedule 27.04.2018
comment
Спасибо за ответ, но я не это имел в виду. Я пытаюсь заставить plotnine отображать только левую ось, но соответствующим образом регулирую высоту полосы. В моем примере это будет означать, что верхняя левая ось должна иметь значение ymax, равное 5, и настроить высоту верхней левой полосы на 1. Если вы запустите мой пример кода с пакетом ggplot2, вы получите именно такой результат. - person HappyPy; 28.04.2018