ggplotly не показывает бары со значениями infinte - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь использовать barglot, используя ggplotly, когда в моих данных есть значение Inf.

Это мой код:

table<-data.frame("X"=c("a","b","c","d","e"),"Y"=c(-1,0,1,2,Inf))
p <- ggplot(table, aes(x=X, y=Y)) +  
  labs(x="X",y="Y") + geom_bar(stat="identity") +  coord_flip() +
  scale_x_discrete(limits = table$X[order(table$Y)]) 
p<-p+theme(
  panel.background = element_rect(fill = "white"),
  panel.grid.major = element_line(colour = "lightgray"),
  plot.background = element_rect(fill="white")
) 
p
ggplotly(p)

Есть ли способ исправить это?

Спасибо

1 Ответ

1 голос
/ 10 июня 2019

ggplot показывает бесконечные значения в максимальном диапазоне графика, в то время как базовые R plot и plotly выбрасывают неконечные значения.Один из подходов (единственный?) Заключается в манипулировании вашими данными для преобразования бесконечных значений в конечное и корректировке члена ggplot expand в scale_y_continuous в соответствии с исходным графиком.

Как сделатьggplot и plot обрабатывают значения inf по-разному?

table_max = max(table$Y[is.finite(table$Y)]) * 1.08 # Default ggplot padding beyond finite 
#  values; I thought 1.05 would work, but 1.08 empirically looks closer in this case
table2 <- table
table2$Y <- ifelse(table2$Y > table_max, table_max, table$Y)

p2 <- ggplot(table2, aes(x=X, y=Y)) +  
  labs(x="X",y="Y") + geom_bar(stat="identity") +  coord_flip() +
  scale_x_discrete(limits = table$X[order(table$Y)])  +
  scale_y_continuous(expand = expand_scale(mult = c(0.05, 0)))
p2 <- p2+theme(
  panel.background = element_rect(fill = "white"),
  panel.grid.major = element_line(colour = "lightgray"),
  plot.background = element_rect(fill="white")
) 
p2

plotly::ggplotly(p2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...