0

I need to use ggplotly to create the following plot using facet_wrap. All is ok, the only problem is that resizing the axis tick labels works only on the left plot! Any ideas how to fix this? I deliberately put a ridiculously small size to point out the difference.

Thanks in advance.

library(ggplot2)
library(plotly)

data <- data.frame(group = c('groupe A', 'groupe A', 'groupe A', 'groupe A',
                             'groupe B', 'groupe B', 'groupe B', 'groupe B'), 
                   level = c('book', 'cd', 'book', 'cd', 'book', 'cd', 'book', 'cd'),
                   type = c('with', 'with', 'without', 'without',
                            'with', 'with', 'without', 'without'),
                   values = c(6,0, 12, 4, 7, 11, 13, 5))


ggplotly(
  ggplot(data) +
    geom_bar(aes(x = level, y = values, fill = type), stat = "identity", position = "dodge") +
    geom_text(aes(x = level, y = values+0.5, fill = type, label = values),
              position = position_dodge(width = 1), size = 3) +
    scale_fill_manual(values = c(rgb(31, 119, 180, maxColorValue = 255), rgb(59, 159, 255, maxColorValue = 255))) +
    theme_bw() +
    theme(axis.title = element_blank(),
          legend.title = element_blank(),
          axis.line = element_blank(), 
          panel.border = element_rect(color = "black", fill = NA, size = 0.5)
    ) +
    facet_wrap(~group)
) %>%
  layout(
    showlegend = TRUE,
    legend = list(orientation = "h", y = -0.1, x = 0.3),
    xaxis = list(tickfont = list(size = 5))
  )
Parisa
  • 448
  • 5
  • 11

2 Answers2

1

Well I found the answer. It's better to mention size in the ggplot theme :

ggplotly(
  ggplot(data) +
    geom_bar(aes(x = level, y = values, fill = type), stat = "identity", position = "dodge") +
    geom_text(aes(x = level, y = values+0.5, fill = type, label = values),
              position = position_dodge(width = 1), size = 3) +
    scale_fill_manual(values = c(rgb(31, 119, 180, maxColorValue = 255), rgb(59, 159, 255, maxColorValue = 255))) +
    theme_bw() +
    theme(axis.title = element_blank(),
          legend.title = element_blank(),
          axis.line = element_blank(), 
          axis.text.x = element_text(size = 5), 
          panel.border = element_rect(color = "black", fill = NA, size = 0.5)
    ) +
    facet_wrap(~group)
) 
Parisa
  • 448
  • 5
  • 11
1

Dont know if this still is a problem, but you have to name every row and column in your facet-plot.

what this means, is that; if you have 3x3-facet-plot, and you waat textsize to 11, then you have to:

layout(
   xaxis = list(tickfont = list(size = 11)),
   xaxis2 = list(tickfont = list(size = 11)),
   xaxis3 = list(tickfont = list(size = 11)),
   yaxis = list(tickfont = list(size = 11)),
   yaxis2 = list(tickfont = list(size = 11)),
   yaxis3 = list(tickfont = list(size = 11))) 

Hopes this helps