[解決済み】R ggplot2 で scale_x_discrete を使用する。
2022-02-05 14:40:17
質問
R の ggplot2 で離散スケールを使用する際に問題があります。
g + scale_x_discrete(breaks=1:7, labels=1:7)
プロットの限界値を不正に変更する。
以前は
画像を生成するために使っているコードに不審な点は見当たりませんが、以下の通りです。
g <- ggplot(data=plottingData, aes(x=x, y=y, ymin=ymin, ymax=ymax)) +
geom_bar(stat="identity", fill=col) +
geom_errorbar(width=0.5*binwidth, size=0.3)
そして、こちらは
dput()
というように、ggplot2オブジェクトを生成します。
structure(list(data = structure(list(x = c(1, 2, 3, 4, 5, 6, 7), y = c(0.689655172413793, 0.689655172413793, 11.0344827586207, 2.75862068965517, 70.3448275862069, 13.7931034482759, 0.689655172413793 ), ymin = c(0, 0, 6.84765916431683, 0.870298113507349, 62.426550974053, 9.06894448064895, 0), ymax = c(4.26873021234759, 4.26873021234759, 17.3134146611865, 7.18339316166044, 77.1707644621886, 20.4612568616329, 4.26873021234759)), .Names = c("x", "y", "ymin", "ymax"), row.names = c(NA, -7L), class = "data.frame"), layers = list(<environment>, <environment>), scales = <S4 object of class structure("Scales", package = "ggplot2")>, mapping = structure(list(x = x, y = y, ymin = ymin, ymax = ymax), .Names = c("x", "y", "ymin", "ymax"), class = "uneval"), theme = structure(list( line = structure(list(colour = "black", size = 0.5, linetype = 1, lineend = "butt"), .Names = c("colour", "size", "linetype", "lineend"), class = c("element_line", "element")), rect = structure(list( fill = "white", colour = "black", size = 0.5, linetype = 1), .Names = c("fill", "colour", "size", "linetype"), class = c("element_rect", "element")), text = structure(list(family = "", face = "plain", colour = "black", size = 12, hjust = 0.5, vjust = 0.5, angle = 0, lineheight = 0.9), .Names = c("family", "face", "colour", "size", "hjust", "vjust", "angle", "lineheight"), class = c("element_text", "element")), axis.text = structure(list(family = NULL, face = NULL, colour = NULL, size = structure(0.8, class = "rel"), hjust = NULL, vjust = NULL, angle = NULL, lineheight = NULL), .Names = c("family", "face", "colour", "size", "hjust", "vjust", "angle", "lineheight"), class = c("element_text", "element")), strip.text = structure(list(family = NULL, face = NULL, colour = NULL, size = structure(0.8, class = "rel"), hjust = NULL, vjust = NULL, angle = NULL, lineheight = NULL), .Names = c("family", "face", "colour", "size", "hjust", "vjust", "angle", "lineheight"), class = c("element_text", "element")), axis.line = structure(list(), class = c("element_blank", "element")), axis.text.x = structure(list(family = NULL, face = NULL, colour = NULL, size = NULL, hjust = NULL, vjust = 1, angle = NULL, lineheight = NULL), .Names = c("family", "face", "colour", "size", "hjust", "vjust", "angle", "lineheight"), class = c("element_text", "element")), axis.text.y = structure(list(family = NULL, face = NULL, colour = NULL, size = NULL, hjust = 1, vjust = NULL, angle = NULL, lineheight = NULL), .Names = c("family", "face", "colour", "size", "hjust", "vjust", "angle", "lineheight"), class = c("element_text", "element")), axis.ticks = structure(list(colour = "black", size = NULL, linetype = NULL, lineend = NULL), .Names = c("colour", "size", "linetype", "lineend"), class = c("element_line", "element")), axis.title.x = structure(list(family = NULL, face = NULL, colour = NULL, size = NULL, hjust = NULL, vjust = NULL, angle = NULL, lineheight = NULL), .Names = c("family", "face", "colour", "size", "hjust", "vjust", "angle", "lineheight"), class = c("element_text", "element")), axis.title.y = structure(list(family = NULL, face = NULL, colour = NULL, size = NULL, hjust = NULL, vjust = NULL, angle = 90, lineheight = NULL), .Names = c("family", "face", "colour", "size", "hjust", "vjust", "angle", "lineheight"), class = c("element_text", "element")), axis.ticks.length = structure(0.15, unit = "cm", valid.unit = 1L, class = "unit"), axis.ticks.margin = structure(0.1, unit = "cm", valid.unit = 1L, class = "unit"), legend.background = structure(list(fill = NULL, colour = NA, size = NULL, linetype = NULL), .Names = c("fill", "colour", "size", "linetype"), class = c("element_rect", "element")), legend.margin = structure(0.2, unit = "cm", valid.unit = 1L, class = "unit"), legend.key = structure(list(fill = NULL, colour = "grey80", size = NULL, linetype = NULL), .Names = c("fill", "colour", "size", "linetype"), class = c("element_rect", "element")), legend.key.size = structure(1.2, unit = "lines", valid.unit = 3L, class = "unit"), legend.key.height = NULL, legend.key.width = NULL, legend.text = structure(list( family = NULL, face = NULL, colour = NULL, size = structure(0.8, class = "rel"), hjust = NULL, vjust = NULL, angle = NULL, lineheight = NULL), .Names = c("family", "face", "colour", "size", "hjust", "vjust", "angle", "lineheight"), class = c("element_text", "element")), legend.text.align = NULL, legend.title = structure(list( family = NULL, face = "bold", colour = NULL, size = structure(0.8, class = "rel"), hjust = 0, vjust = NULL, angle = NULL, lineheight = NULL), .Names = c("family", "face", "colour", "size", "hjust", "vjust", "angle", "lineheight"), class = c("element_text", "element")), legend.title.align = NULL, legend.position = "right", legend.direction = NULL, legend.justification = "center", legend.box = NULL, panel.background = structure(list( fill = "white", colour = NA, size = NULL, linetype = NULL), .Names = c("fill", "colour", "size", "linetype"), class = c("element_rect", "element")), panel.border = structure(list(fill = NA, colour = "grey50", size = NULL, linetype = NULL), .Names = c("fill", "colour", "size", "linetype"), class = c("element_rect", "element")), panel.grid.major = structure(list(colour = "grey90", size = 0.2, linetype = NULL, lineend = NULL), .Names = c("colour", "size", "linetype", "lineend"), class = c("element_line", "element")), panel.grid.minor = structure(list(colour = "grey98", size = 0.5, linetype = NULL, lineend = NULL), .Names = c("colour", "size", "linetype", "lineend"), class = c("element_line", "element")), panel.margin = structure(0.25, unit = "lines", valid.unit = 3L, class = "unit"), panel.margin.x = NULL, panel.margin.y = NULL, strip.background = structure(list( fill = "grey80", colour = "grey50", size = 0.2, linetype = NULL), .Names = c("fill", "colour", "size", "linetype"), class = c("element_rect", "element")), strip.text.x = structure(list(family = NULL, face = NULL, colour = NULL, size = NULL, hjust = NULL, vjust = NULL, angle = NULL, lineheight = NULL), .Names = c("family", "face", "colour", "size", "hjust", "vjust", "angle", "lineheight"), class = c("element_text", "element")), strip.text.y = structure(list(family = NULL, face = NULL, colour = NULL, size = NULL, hjust = NULL, vjust = NULL, angle = -90, lineheight = NULL), .Names = c("family", "face", "colour", "size", "hjust", "vjust", "angle", "lineheight"), class = c("element_text", "element")), plot.background = structure(list(fill = NULL, colour = "white", size = NULL, linetype = NULL), .Names = c("fill", "colour", "size", "linetype"), class = c("element_rect", "element")), plot.title = structure(list(family = NULL, face = NULL, colour = NULL, size = structure(1.2, class = "rel"), hjust = NULL, vjust = NULL, angle = NULL, lineheight = NULL), .Names = c("family", "face", "colour", "size", "hjust", "vjust", "angle", "lineheight"), class = c("element_text", "element")), plot.margin = structure(c(1, 1, 0.5, 0.5), unit = "lines", valid.unit = 3L, class = "unit")), .Names = c("line", "rect", "text", "axis.text", "strip.text", "axis.line", "axis.text.x", "axis.text.y", "axis.ticks", "axis.title.x", "axis.title.y", "axis.ticks.length", "axis.ticks.margin", "legend.background", "legend.margin", "legend.key", "legend.key.size", "legend.key.height", "legend.key.width", "legend.text", "legend.text.align", "legend.title", "legend.title.align", "legend.position", "legend.direction", "legend.justification", "legend.box", "panel.background", "panel.border", "panel.grid.major", "panel.grid.minor", "panel.margin", "panel.margin.x", "panel.margin.y", "strip.background", "strip.text.x", "strip.text.y", "plot.background", "plot.title", "plot.margin" ), class = c("theme", "gg"), complete = TRUE), coordinates = structure(list( limits = structure(list(x = NULL, y = NULL), .Names = c("x", "y"))), .Names = "limits", class = c("cartesian", "coord" )), facet = structure(list(shrink = TRUE), .Names = "shrink", class = c("null", "facet")), plot_env = <environment>, labels = structure(list( x = "x", y = "y", ymin = "ymin", ymax = "ymax"), .Names = c("x", "y", "ymin", "ymax"))), .Names = c("data", "layers", "scales", "mapping", "theme", "coordinates", "facet", "plot_env", "labels" ), class = c("gg", "ggplot"))
注目すべきは、expandパラメータはプロットをわずかに調整するだけであり
expand=c(0,0)
は問題を解決しません。limits を指定すると問題は解決しますが、何らかの理由で軸ラベルが削除されます。
何かご助言があればお願いします。
解決方法は?
を追加すると、おそらくすでにそうなります。
g + scale_x_discrete()
. これは連続データに対して離散的な尺度を使用した場合に起こります。ブレークがなければ、間違った限界値を確認し、それを変更するだけでよいのです。
g + scale_x_discrete()
g + scale_x_discrete(limits=1:7)
g + scale_x_discrete(limits=1:7, labels = letters[1:7])
あるいは
factor
を使用すると、最初から適切な制限を得ることができます。もちろん、軸の名前を変更する必要があります。
ggplot(data=plottingData, aes(x=factor(x), y=y, ymin=ymin, ymax=ymax)) +
geom_bar(stat="identity", fill=col) +
geom_errorbar(width=0.5*binwidth, size=0.3) +
scale_x_discrete(name = 'x')
関連
-
[解決済み】rbind エラー。"名前が以前の名前と一致しない"
-
[解決済み】Rで相対的な頻度をプロットするためにhistをどのように使用しますか?
-
[解決済み] matplotlib でプロットをクリアするために cla()、clf() または close() をいつ使うか?
-
[解決済み] ggplot2 の軸ラベルを回転させ、間隔を空ける
-
[解決済み] ggplot2 Rプロットで軸の制限を設定するには?
-
[解決済み] ggplot2 の棒グラフで棒を並べる
-
[解決済み】ggplot2によるサイド・バイ・サイド・プロット
-
[解決済み】ggplot2でプロットタイトルを中央に配置する
-
[解決済み】ggplot2で軸の文字の大きさや向きを変更したい
-
[解決済み】ggplot2 のデフォルトのカラーパレットをエミュレートする
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 変数の型(リスト)が無効です
-
[解決済み】rbind エラー。"名前が以前の名前と一致しない"
-
[解決済み】lis[[i]]のエラー:1つ未満の要素を選択しようとした場合
-
[解決済み】apply()とadply()の出力が異なる件)
-
[解決済み】エラー。Rの'break'の数が無効
-
[解決済み】Rエラー。"新しい列は既存の列の後に穴を空ける"
-
[解決済み] lmer エラー: グループ化係数は観測数未満でなければならない
-
[解決済み】Rの整数オーバーフローとは何ですか、そしてどのように起こるのですか?
-
[解決済み] 因子を日付形式に変換するにはどうすればいいですか?
-
[解決済み】R4DSのエラー比較(1)は、アトミック型とリスト型でのみ可能です