59

で水平ドット プロット (?) を作成することに取り組んでいましたがggplot2、水平バープロットを作成しようと考えるようになりました。ただし、これを行うにはいくつかの制限があります。

ここに私のデータがあります:

df <- data.frame(Seller=c("Ad","Rt","Ra","Mo","Ao","Do"), 
                Avg_Cost=c(5.30,3.72,2.91,2.64,1.17,1.10), Num=c(6:1))
df
str(df)

最初に、次のコードを使用してドット プロットを生成しました。

require(ggplot2)
ggplot(df, aes(x=Avg_Cost, y=reorder(Seller,Num))) + 
    geom_point(colour="black",fill="lightgreen") + 
    opts(title="Avg Cost") +
    ylab("Region") + xlab("") + ylab("") + xlim(c(0,7)) +
    opts(plot.title = theme_text(face = "bold", size=15)) +
    opts(axis.text.y = theme_text(family = "sans", face = "bold", size = 12)) +
    opts(axis.text.x = theme_text(family = "sans", face = "bold", size = 12))

ただし、現在、水平棒グラフを作成しようとしていますが、作成できないことがわかりました。試してみましたがcoord_flip()、それも役に立ちませんでした。

ggplot(df, aes(x=Avg_Cost, y=reorder(Seller,Num))) + 
    geom_bar(colour="black",fill="lightgreen") + 
    opts(title="Avg Cost") +
    ylab("Region") + xlab("") + ylab("") + xlim(c(0,7)) +
    opts(plot.title = theme_text(face = "bold", size=15)) +
    opts(axis.text.y = theme_text(family = "sans", face = "bold", size = 12)) +
    opts(axis.text.x = theme_text(family = "sans", face = "bold", size = 12)) 

で水平方向の棒グラフを生成する方法について、誰か助けてもらえggplot2ますか?

4

3 に答える 3

137
ggplot(df, aes(x=reorder(Seller, Num), y=Avg_Cost)) +
  geom_bar(stat='identity') +
  coord_flip()

stat='identity'ggplot がなければ、データをカウントに集約したいと考えています。

于 2012-06-07T23:32:56.543 に答える
2

バージョン 3.3.0 (2020 年 3 月) 以降、ggplot2美的マッピングから方向が差し引かれます。したがって、@Justin と @ungatooverde のコードを次のように単純化できます。

library(ggplot2)
ggplot(df,
       aes(x = Avg_Cost,
           y = reorder(Seller, Num)
           )
       ) +
  geom_col()

ここに画像の説明を入力

参考:https ://www.tidyverse.org/blog/2020/03/ggplot2-3-3-0/#bi-directional-geoms-and-stats

于 2022-01-12T20:10:04.633 に答える