web-dev-qa-db-ja.com

Rプロットのバープロット、値で並べ替え

X軸にカテゴリがあり、Yにカウントされるバープロットがあります。Yの値に基づいてバーを降順で並べ替える方法はありますか?

これはサンプルコードです

Animals <- c("giraffes", "orangutans", "monkeys")
Count <- c(20, 14, 23)
data <- data.frame(Animals, Count)

data <- arrange(data,desc(Count))

plot_ly(data, x = ~Animals, y = ~Count, type = 'bar', name = 'SF Zoo')

プロットの前にカウントでデータを配置したにもかかわらず、動物の名前でアルファベット順に並べ替えられたバーが表示されます。

ありがとう、Manoj

6
Manoj Agrawal

いくつかのこと:

  1. str(data)を見てください。stringsAsFactors = FALSEの呼び出しでdata.frameを指定しない限り、Animals文字ベクトルは強制的に強制されます。この係数のレベルは、デフォルトではアルファベットです。
  2. Animalsdataの文字ベクトルにされたとしても、plot_lyは文字変数をどう処理するかを知らないため、それらを強制的に因子にします。

探している降順を取得するには、因子レベルの順序を設定する必要があります。

Animals <- c("giraffes", "orangutans", "monkeys")
Count <- c(20, 14, 23)
data <- data.frame(Animals, Count, stringsAsFactors = FALSE)
data$Animals <- factor(data$Animals, levels = unique(data$Animals)[order(data$Count, decreasing = TRUE)])
plot_ly(data, x = ~Animals, y = ~Count, type = "bar", name = 'SF Zoo')

enter image description here

14
Jeff Keller