Порядок по имени, если повторить - PullRequest
0 голосов
/ 29 апреля 2020

Я бы хотел отсортировать столбцы в порядке убывания по значению, и если значение повторяется, название города должно появляться в алфавитном порядке

library(plotly)

city   <- c("Paris", "New York", "Rio", "Salvador", "Curitiba", "Natal")
value  <- c(10,20,30,10,10,10)

data   <- data.frame(city, value, stringsAsFactors = FALSE)

data$city <- factor(data$city, levels = unique(data$city)[order(data$value, decreasing = FALSE)])


fig <- plot_ly(y = data$city, x = data$value, type = "bar", orientation = 'h')

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Используя tidyverse, я предлагаю следующее:

library(tidyverse)

city   <- c("Paris", "New York", "Rio", "Salvador", "Curitiba", "Natal")
value  <- c(10,20,30,10,10,10)

data   <- data.frame(city, value)
db <- as_tibble(data)

db %>%
  ggplot(aes(x = reorder(city, -value), y=value))+
  geom_col()

Функция «изменить порядок» в определении «x» создает то, что вы хотите, и соблюдается алфавитный порядок.

Для сделайте этот график вертикально, в конце добавьтеordin_flip. «-Значение» можно переключить на «значение», если вы хотите изменить порядок

library(tidyverse)

city   <- c("Paris", "New York", "Rio", "Salvador", "Curitiba", "Natal", "Zoo", "Aaa")
value  <- c(10,20,30,10,10,10,10,10)

data   <- data.frame(city, value)
db <- as_tibble(data)

db %>%
  ggplot(aes(x = reorder(city, value), y=value))+
  geom_col() +
  coord_flip()
1 голос
/ 29 апреля 2020

Может быть достигнуто с помощью функции заказа на кадре данных. Применяет порядок к столбцу значений, знак (-) указывает на уменьшение, а затем к названию города

data_ordered <- data[order(-data$value, data$city),]
data_ordered
     city value
3      Rio    30
2 New York    20
5 Curitiba    10
6    Natal    10
1    Paris    10
4 Salvador    10

data_ordered$city <- factor(data_ordered$city, levels = data_ordered$city)

plot_ly(y = data_ordered$city, x = data_ordered$value, type = "bar", orientation = 'h') %>%
  layout(yaxis = list(autorange = "reversed"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...