有没有一种方法可以将条形图w.r.t排序为Y轴上的值,例如先显示最高的条形,然后显示第二个最高的条形,等等。
说,我有产品和销售数据:
> Product <- c("Orange", "Mango", "Apple")
> Sale <- c(28, 50, 21)
> data <- data.frame(Product, Sale)
> plot_ly(data, x = ~Product, y = ~Sale, type = 'bar')
这显示了顺序为Apple, Mango & Orange
的小节。我需要的是订单:Mango, Orange & Apple
。这可能吗?
答案 0 :(得分:2)
您必须以正确的顺序设置因子水平。在您的情况下,您可以按Sale排序data.frame,然后按照当前表单中显示的因子级别进行设置:
library(tidyverse)
Product <- c("Orange", "Mango", "Apple")
Sale <- c(28, 50, 21)
data <- data.frame(Product, Sale) %>%
arrange(-Sale) %>%
mutate(Product = fct_inorder(Product))
plot_ly(data, x = ~Product, y = ~Sale, type = 'bar')
相关功能fct_inorder()
来自 forcats 包。
答案 1 :(得分:2)
您只需将plot_ly函数更改为
plot_ly(data, x = stats::reorder(Product, -Sale), y = ~Sale, type = 'bar')
这应该有效