2

私の質問はこの質問に関連しています。4年ファセットで「2014」が欲しい。繰り返してみましたが、私のコードは私が望むものを提供しません。

ggplot2 の個々のファセットにテキストに注釈を付ける

これは私のデータです

structure(list(Rot = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("2-year", 
"3-year", "4-year"), class = "factor"), Rot.Herb = structure(c(3L, 
3L, 4L, 4L, 13L, 13L, 14L, 14L, 5L, 5L, 6L, 6L, 9L, 9L, 10L, 
10L, 15L, 15L, 16L, 16L, 1L, 1L, 2L, 2L, 7L, 7L, 8L, 8L, 11L, 
11L, 12L, 12L, 17L, 17L, 18L, 18L), .Label = c("A4-conv", "A4-low", 
"C2-conv", "C2-low", "C3-conv", "C3-low", "C4-conv", "C4-low", 
"O3-conv", "O3-low", "O4-conv", "O4-low", "S2-conv", "S2-low", 
"S3-conv", "S3-low", "S4-conv", "S4-low"), class = "factor"), 
    variable = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 
    2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 
    1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("Diversity", 
    "Evenness"), class = "factor"), N = c(4, 4, 4, 4, 4, 4, 4, 
    4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
    4, 4, 4, 4, 4, 4, 4, 4, 4, 4), value = c(0.78537789925, 0.613408315, 
    1.305194686, 0.79519430975, 0.4481728555, 0.30608817425, 
    1.20978861475, 0.8580643725, 0.92387324875, 0.630166121, 
    0.945954185, 0.561172324, 1.43952456275, 0.8616864655, 1.23679146725, 
    0.831737624, 1.033474108, 0.80689293925, 0.9910142125, 0.79342098075, 
    1.175512223, 0.6293940245, 0.981614832, 0.62342189825, 1.351710013, 
    0.805075937, 1.6598348325, 0.7983622545, 1.01606920875, 0.5751418795, 
    1.0500365255, 0.56408326225, 1.07162937725, 0.6756859865, 
    0.45699816625, 0.44444147325), sd = c(0.354077266902404, 
    0.208934910331856, 0.169501822767995, 0.0774319459391732, 
    0.737366460962239, 0.40697977697835, 0.494107033311986, 0.11906912863268, 
    0.491492768082854, 0.34236657107712, 0.219739438843007, 0.205905593411204, 
    0.319301583035043, 0.0696484379979274, 0.0563293598951725, 
    0.0978700910274188, 0.446850757364563, 0.175073468716825, 
    0.426859848850874, 0.180469101499932, 0.526842123835502, 
    0.200470277385505, 0.574885944755375, 0.27189545397305, 0.39621771945215, 
    0.150798258847229, 0.275863362594154, 0.111178397407429, 
    0.254811233135664, 0.158920851982914, 0.198698241334475, 
    0.0730606635175717, 0.717706309307313, 0.453776579066358, 
    0.574276936403411, 0.513758415496589), se = c(0.177038633451202, 
    0.104467455165928, 0.0847509113839974, 0.0387159729695866, 
    0.368683230481119, 0.203489888489175, 0.247053516655993, 
    0.0595345643163399, 0.245746384041427, 0.17118328553856, 
    0.109869719421504, 0.102952796705602, 0.159650791517521, 
    0.0348242189989637, 0.0281646799475863, 0.0489350455137094, 
    0.223425378682282, 0.0875367343584126, 0.213429924425437, 
    0.090234550749966, 0.263421061917751, 0.100235138692753, 
    0.287442972377688, 0.135947726986525, 0.198108859726075, 
    0.0753991294236146, 0.137931681297077, 0.0555891987037145, 
    0.127405616567832, 0.0794604259914568, 0.0993491206672376, 
    0.0365303317587859, 0.358853154653656, 0.226888289533179, 
    0.287138468201705, 0.256879207748294), ci = c(0.563415944919255, 
    0.332462066715199, 0.26971522480343, 0.123211505132525, 1.1733145846647, 
    0.647595643784969, 0.786234551289211, 0.189465554245211, 
    0.782074671929471, 0.544781614588516, 0.349654482635521, 
    0.327641747494367, 0.508080071600555, 0.110826207087643, 
    0.089632581638694, 0.155733154793995, 0.71103927089404, 0.278580956835532, 
    0.679229274424713, 0.287166612643164, 0.838323385234058, 
    0.318992946792351, 0.914771825423139, 0.432646341459985, 
    0.630470808679215, 0.23995368085579, 0.438960169525453, 0.176909640028318, 
    0.40546153371869, 0.252878539112781, 0.316173242000635, 0.116255819336536, 
    1.14203089616693, 0.722059798737006, 0.91380275723334, 0.817504285602766
    )), .Names = c("Rot", "Rot.Herb", "variable", "N", "value", 
"sd", "se", "ci"), row.names = c(NA, -36L), class = "data.frame")

およびグラフ化するコード

p <- ggplot(Shannon.long2, aes(x=Rot.Herb, y=value, fill=factor(variable)))+
  geom_bar(stat="identity", position="dodge")+
  scale_fill_brewer(palette = "Set1")+
  theme_bw() +
  theme(panel.grid.major=element_blank()) +
  facet_grid(~Rot, scales = "free_x", space="free_x")+
  theme(legend.title=element_blank(),legend.text=element_text(size=20),legend.position="top")+
  geom_errorbar(aes(ymin=value-se, ymax=value+se), size=0.5, width=.25,position=position_dodge(.9))+
  xlab("\nTreatment") +
  theme(axis.title = element_text(size=24,face="bold", vjust=4), axis.text.x = element_text(size=20,angle = 90, hjust = 1)) +
  ylab("Shannon's H' and E'") +
  theme(axis.title = element_text(size=24,face="bold", vjust=2), axis.text.y = element_text(size=20, color="black"))+
  theme(strip.text.x = element_text(colour = "black", size = 20), strip.background = element_rect(fill = "white"))

生成されたグラフ (y 軸の「2014」は気にしないでください)。 ここに画像の説明を入力

eipi10 の助けを借りて、2014 年に注釈を付ける新しいコード

 ann_text <- data.frame(x = "S4-conv",y = 1.75,lab = "2014", Rot.Herb=NA, 
value=NA, variable=NA, 
N=NA, sd=NA, se=NA, ci=NA, 
Rot = factor("4-year",levels = c("2-year","3-year","4-year")))

Error: Discrete value supplied to continuous scaleを実行した後にエラーが発生しましたp + geom_text(data = ann_text,label = "2014")。私のコードとデータ形式の問題点を確認してください。ありがとう。

4

1 に答える 1

1

問題は、 を含めるvalue=NAann_text( のモードである数値ではなく) 論理として解釈され、Shannon.long2ggplot がカテゴリ変数ではなく数値変数を想定しているため、エラーが発生することです。を設定value=NA_real_して ( に加えてNA、R にはクラス固有の欠損値定数があります。詳細については、を参照?NAしてください)を数値として解釈し、エラーを解決しますann_textvalueまたはvalue、任意の数値に設定します (例: ) value=0

theme以下の例では、すべてのandステートメントを削除してlab、コードを本質的な部分まで短縮しています。

p = ggplot(Shannon.long2, aes(x=Rot.Herb, y=value, fill=factor(variable))) +
  geom_bar(stat="identity", position="dodge") +
  geom_errorbar(aes(ymin=value-se, ymax=value+se), size=0.5, width=.25,position=position_dodge(.9)) +
  facet_grid(~Rot, scales = "free_x", space="free_x")

ann_text <- data.frame(x = "S4-conv", y = 1.75, lab = "2014", Rot.Herb=NA, 
                       value=NA_real_, variable=NA)

p + geom_text(data = ann_text, aes(label=lab, x, y))

ラベルの場所を提供するには、フィードxy値も必要であることに注意してください。geom_text

別のオプションは、元のデータ フレームと同じ x および y 変数名を使用することです。これは、ggplot がこれらの名前を既に認識しており、それらに基づいてグラフをスケーリングしているためです。追加する必要がある唯一の不足している列は次のvariableとおりです。

ann_text <- data.frame(Rot.Herb = "S4-conv", value = 1.75, lab = "2014", variable=NA)

p + geom_text(data = ann_text, aes(label=lab, Rot.Herb, value))
于 2016-06-10T21:30:37.087 に答える