首页 > 解决方案 > order Plotly 条形图 wrt Y 轴/按条形高度

问题描述

有没有办法将条形图排序为 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。这可能吗 ?

标签: rplotly

解决方案


您必须以正确的顺序设置因子水平。在您的情况下,您可以按销售订购 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包。


推荐阅读