[解決済み] ggplot2 未使用レベルを保持する barplot
2022-05-14 14:44:43
質問
未使用のレベル(カウントが0のレベル)を棒グラフにしたいのですが、未使用のレベルは削除されてしまい、どのように保存すればよいのかわかりません。
df <- data.frame(type=c("A", "A", "A", "B", "B"), group=rep("group1", 5))
df$type <- factor(df$type, levels=c("A","B", "C"))
ggplot(df, aes(x=group, fill=type)) + geom_bar()
上の例では、Cをカウント0にしてプロットしてほしいのですが、全くありません...。
よろしくお願いします。 Ulrik
編集します。
これは私が望むことをします
df <- data.frame(type=c("A", "A", "A", "B", "B"), group=rep("group1", 5))
df1 <- data.frame(type=c("A", "A", "A", "B", "B", "A", "A", "C", "B", "B"), group=c(rep("group1", 5),rep("group2", 5)))
df$type <- factor(df$type, levels=c("A","B", "C"))
df1$type <- factor(df1$type, levels=c("A","B", "C"))
df <- data.frame(table(df))
df1 <- data.frame(table(df1))
ggplot(df, aes(x=group, y=Freq, fill=type)) + geom_bar(position="dodge")
ggplot(df1, aes(x=group, y=Freq, fill=type)) + geom_bar(position="dodge")
解決策は、table() を使って頻度を計算し、プロットすることだと思います。
どのように解決するのですか?
このように、drop=FALSEを両方のスケール(fillとx)に設定する必要があります。
library(ggplot2)
df <- data.frame(type=c("A", "A", "A", "B", "B"), group=rep("group1", 5))
df1 <- data.frame(type=c("A", "A", "A", "B", "B", "A", "A", "C", "B", "B"), group=c(rep("group1", 5),rep("group2", 5)))
df$type <- factor(df$type, levels=c("A","B", "C"))
df1$type <- factor(df1$type, levels=c("A","B", "C"))
plt <- ggplot(df, aes(x=type, fill=type)) +
geom_bar(position='dodge') +
scale_fill_discrete(drop=FALSE) +
scale_x_discrete(drop=FALSE)
plt1 <- ggplot(df1, aes(x=type, fill=type)) +
geom_bar(position='dodge') +
scale_fill_discrete(drop=FALSE) +
scale_x_discrete(drop=FALSE)
編集する
これで動くと思うのですが x を group ではなく type に、position='dodge' に変更するのを忘れていました! 貼り付けてテストしてみてください。stat_bin はカウントがゼロのビンを扱います。以下の項目をチェックしてください。 ドキュメント .
関連
-
ggplot2 からグリッドと背景色を削除する。
-
Rの警告 "条件の長さが1より大きいので、最初の要素しか使えない "に対する解決策
-
Rによる系統的クラスタリング(階層)分析のグラフ形式の完全版
-
[解決済み] Rでcは何をするのですか?重複] [重複
-
[解決済み] ggplot2 の軸ラベルを回転させ、間隔を空ける
-
[解決済み] xkcd風のグラフを作るには?
-
[解決済み] 関数のソースコードを見るにはどうしたらいいですか?
-
[解決済み] ベクトル中のxの値を持つ要素の個数を数える
-
[解決済み] data.frameの1つの列の名前を変更する方法は?
-
[解決済み】サブセットされたデータフレーム内の未使用の因子レベルを削除する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
RStudio の "plot.new() : figure margins too large" 問題を解決する。
-
[解決済み] Rでデータフレームに行を追加する方法は?
-
[解決済み] Rの%*%の意味 [重複]について
-
[解決済み] Rで複数行のコメントを持つことは可能ですか?[重複している]。
-
[解決済み] R:自然対数を使った方程式をnlsで使う
-
[解決済み] リストをデータフレームに変換する
-
[解決済み] Rでtrycatchの書き方
-
[解決済み] データフレームのリストを行単位で1つのデータフレームに結合する
-
[解決済み】安定したマッピングを持つggplot2のカテゴリ変数に色を割り当てるには?
-
[解決済み】Rスクリプトで警告をグローバルに抑制する方法