1. ホーム
  2. r

[解決済み] ビューポートの位置やサイズが一定でない場合、どうすればよいですか?

2022-02-01 16:03:01

質問

以下は、簡略化され、テスト可能な例です。

dataset <- data.frame(
  emp_month = c("January","March","April","May","December"),
  salary = c(623.3,515.2,611.0,729.0,843.25))

library(ggplot2)

ggplot(dataset)+
  geom_boxplot(aes(x = sort(factor(emp_month)), y = salary))+
  geom_point(aes( x = sort(factor(emp_month)), y=salary))+
  facet_grid(. ~ sort(factor(emp_month)),space = "free", scales="free",margins = T)

エラーの説明。

このようなコードを書くことができます

library(ggplot2)
MesDeConclusao =  factor(MesDeConclusao, levels = month.name)
MesDeConclusao = sort(MesDeConclusao)
ggplot(dataset)+
    geom_boxplot(aes(x = MesDeConclusao, y = Horas.Totais.PE))+
   geom_point(aes( x = MesDeConclusao, y=Horas.Totais.PE))+
facet_grid(. ~  MesDeConclusao,space = "free", scales="free",margins = T)

を実行すると、次のような出力が得られます。

月を時系列に並べるために、私は sortfacto r:

library(ggplot2)
MesDeConclusao =  factor(MesDeConclusao, levels = month.name)
MesDeConclusao = sort(MesDeConclusao)
ggplot(dataset)+
    geom_boxplot(aes(x = sort(factor(MesDeConclusao, levels = month.name)), y = Horas.Totais.PE))+
   geom_point(aes( x = sort(factor(MesDeConclusao, levels = month.name)), y=Horas.Totais.PE))+
facet_grid(. ~  sort(factor(MesDeConclusao, levels = month.name)),space = "free", scales="free")

という結果になりました。

しかし margins = Tfacet_grid(. ~ sort(factor(MesDeConclusao, levels = month.name)),space = "free", scales="free", margins = T) というエラーメッセージが表示されます。

grid.Call.graphics(C_setviewport,vp,TRUE) でエラーが発生しました。 ビューポートの位置やサイズが一定ではありません。 を呼び出します。 FUN -> push.vp.viewport -> grid.Call.graphics 実行停止

解決方法は?

プロット内で因子レベルをソートすることがなぜ有益なのか理解できません。これはデータをプロットする前に処理するのが最善です。これはデータをプロットする前に処理するのがベストです。

# Just to ensure levels are in correct order
dataset$emp_month <- factor(
  dataset$emp_month, 
  levels = c("January", "March", "April", "May", "December")
  )

ggplot(dataset) +
  geom_boxplot(aes(x = emp_month, y = salary)) +
  geom_point(aes(x = emp_month, y = salary)) +
  facet_grid(. ~ emp_month ,space = "free", scales = "free", margins = T)