56864


ggplot2で、geom_bar()を使って棒グラフを作成しようとしています。  
データは

[code]

                Loc season       value              label
    1         Hokkaido  Start  0.65383148        Aomori_Start
    2         Hokkaido    Mid  3.08996391          Aomori_Mid
    3         Hokkaido    End  6.08238792          Aomori_End
    4        Aomori  Start  0.82355499       Aomori_Start
    5        Aomori    Mid  0.82355499         Aomori_Mid
    6        Aomori    End  0.00000000         Aomori_End
    …
    
[/code]

のような形式で、X軸をlabel、Y軸をvalueとして棒グラフを描画して、X/Y軸を転置しています。  
各バーはseasonで色分けをしています。

[code]

    p <- ggplot(df, aes(x = label , y = value))
    p <- p + geom_bar(stat = "identity", aes(fill=season))+ coord_flip() + scale_fill_brewer(palette = "Set1") 
    
[/code]

項目のラベルはそのままだと見にくくなりますので、2個飛ばしで地点名だけを表示させたいと考えています。  
例：

[code]

     　　　　 - |||||(Hokkaido_Startのバー）
    Hokkaido - |||||||||||(Hokkaido_Midのバー）
    　　　　　- |||||(Hokkaido_Endのバー）
             - |||||||||||(Aomori_Startのバー）
    Aomori   - ||||||(Aomori_Midのバー)
             - |||(Aomori_Endのバー)
    
[/code]

・プロットしているものとは別な変数をラベルに表示する  
・2個飛ばしで表示する  
という方法がわかりませんでしたので、ご教示いただければ幸いです。


CC BY-SA 4.0
2019-07-24T06:15:36.473
56858
2019-07-24T08:42:32.543
35230
question
r ggplot2
geom_bar()で項目ラベルを2つおきに付けたい


説明とは少しずれますが、多分こういうグラフがかきたいのかなと思いました：

[code]

    ggplot(df, aes(x = Loc, y = value)) +
      geom_bar(stat = "identity", aes(fill = season), position = "dodge") +
      coord_flip() +
      scale_fill_brewer(palette = "Set1") +
      guides(fill = guide_legend(reverse = T))  # Legendが反転しているので直す
    
[/code]

`position = "dodge"`がポイントです  
[![画像の説明をここに入力](https://i.stack.imgur.com/ddNVE.jpg)](https://i.stack.imgur.com/ddNVE.jpg)

説明に忠実にするなら：

[code]

    df$x <- 1:nrow(df)
    df$label <- ifelse(df$x %% 3 == 2, df$Loc, "")  # 2行おきにラベルをつける
    ggplot(df, aes(x = x, y = value)) + 
      geom_bar(stat = "identity", aes(fill=season)) + 
      coord_flip() +
      scale_fill_brewer(palette = "Set1") +
      scale_x_continuous(breaks = seq(1, nrow(df), by = 1), labels = df$label,  # ラベルをつける
                         trans = "reverse") +  # y軸が反転しているので直す
      guides(fill = guide_legend(reverse = T))  # Legendが反転しているので直す
    
[/code]


CC BY-SA 4.0
2019-07-24T08:42:32.543
56864
2019-07-24T08:42:32.543
35233
56858
answer