订购Y纵坐标的条形图/通过条的高度

时间:2018-12-05 14:55:54

标签: r plotly

有没有一种方法可以将条形图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。这可能吗?

2 个答案:

答案 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')

这应该有效