0

で収入のヒストグラムに似たものを作成しようとしていggplot2ます。ただし、y軸に頻度を表示しようとしているのではなく、data.frameから計算された変数を表示しようとしているためgeom_bar()data.frame. ここで、バケットを決定したすべてのバーを表示したいと思いますが、x 軸のすべてのラベルは表示しません。breaks =inを使用してこれを行う方法があるに違いないと考えましたがscale_x_discrete()、これを「毎秒ラベルを表示する」などの方法で取得する方法がわかりませんでした。

因子変数に基づいて個別の x 軸の x 軸に 1 つおきのラベルを表示する方法について、誰か提案がありますか?

(誰かの助けに感謝します。ここで間違った用語を投げかけている場合は申し訳ありません。私はRを初めて使用し、できるだけ正確にすべてを説明しようとしています。)

4

1 に答える 1

2

breaks特殊なブレーク ルールを処理できる関数を引数に指定できます。c(TRUE, FALSE)以下の例では、サブセット操作としてリサイクルすることにより、すべての奇妙なブレークを選択しています。

library(ggplot2)

ggplot(mpg, aes(class)) +
  geom_bar() +
  scale_x_discrete(breaks = function(x){x[c(TRUE, FALSE)]})

もう少し説明:

論理インデックスは、インデックスを作成するベクトルの長さと一致するまで繰り返されます。論理インデックスがこれを繰り返し続ける場合、長さ 2 のインデックスが繰り返されるためc(TRUE, FALSE)、ベクトルのすべての奇数要素が効果的に取得されます。x

x <- 1:9

x[c(TRUE, FALSE)]
#> [1] 1 3 5 7 9

したがって、長さ 3 のインデックスを作成すると、これが 3 回繰り返されます。

x[c(TRUE, FALSE, TRUE)]
#> [1] 1 3 4 6 7 9

内部で何が起こっているかを再現したい場合は、次のようにします。

i <- rep_len(c(TRUE, FALSE), length(x))

x[i]
#> [1] 1 3 5 7 9
于 2021-02-19T11:17:03.177 に答える