geom_segmentggplotを色付きで注文する方法
私はggplot図書館が初めてです。そして、以下を使用してプロットを描画しようとしていますdata.frame:
library(tidyverse)
df <-tribble(~event, ~startdate,~enddate,~loc,
"A",as.POSIXct("1984/02/10"),as.POSIXct("1987/06/10"),"1",
"B",as.POSIXct("1984/02/11"),as.POSIXct("1990/02/12"),"2",
"A",as.POSIXct("1992/05/15"),as.POSIXct("1999/06/15"),"3",
"C",as.POSIXct("2003/08/29"),as.POSIXct("2015/08/29"),"4",
"B",as.POSIXct("2002/04/11"),as.POSIXct("2012/04/12"),"5",
"E",as.POSIXct("2000/02/10"),as.POSIXct("2005/02/15"),"6")
max_date = max(df$startdate,df$enddate)
次のコードスニペットを使用します。
ggplot(NULL)+
geom_segment(data = df,aes(x=loc, xend =loc,y = startdate, yend = enddate,colour=event),size = 5,alpha=0.6) +
geom_label(aes(label=df$event,x = df$loc,y=max_date), size=2) +
#geom_point(data=final_df,aes(x=newspaper,y=date),color="black") + Point from other data frame
coord_flip() + xlab("LoC") + ylab("Year")
次のチャートを出力できます。
上記のグラフを色、つまりeventフィールドを使用して注文するにはどうすればよいですか(つまり、最初にすべてのイベントA、次にイベントB、Cなどを表示するeventように、フィールドでグループごとの操作を実行するにはどうすればよいですか?)私が使用しようとしましたscale_x_continuousし、reorderからtidyverseパッケージが、それはうまくいきませんでした。x軸にもっと「年」を表示するにはどうすればよいですか?私は使用しようとしましたscale_x_date(ここで言及されていますR:ggplotはx軸にすべての日付を表示しますがas.Date、フォーマットggplot geom_segmentが必要as.POSIXctです)。お気軽に訂正してください!
どんな助けでも素晴らしいでしょう!ありがとうございました!
回答
2つのオプション。また、xとyを逆にしたので、使用する必要はなくcoord_flip()、x軸ラベルを含む他のいくつかの小さな変更を加えました(軸scale_y_datetimeを反転し、「日付」は実際にはPOSIXctにあったので探していました)。また、Duckの答えとの1つの違いは、私のscales = "free" infacet_gridです。とにかくこれらの新しいグラフを考えると、ラベルを決定し、「loc」変数が意味をなさない場合があります。
library(tibble); library(ggplot2)
df <-tribble(~event, ~startdate,~enddate,~loc,
"A",as.POSIXct("1984/02/10"),as.POSIXct("1987/06/10"),"1",
"B",as.POSIXct("1984/02/11"),as.POSIXct("1990/02/12"),"2",
"A",as.POSIXct("1992/05/15"),as.POSIXct("1999/06/15"),"3",
"C",as.POSIXct("2003/08/29"),as.POSIXct("2015/08/29"),"4",
"B",as.POSIXct("2002/04/11"),as.POSIXct("2012/04/12"),"5",
"E",as.POSIXct("2000/02/10"),as.POSIXct("2005/02/15"),"6")
max_date = max(df$startdate,df$enddate)
ggplot(df)+
geom_segment(aes(y=event, yend = event, x = startdate, xend = enddate, colour=event),size = 5,alpha=0.6) +
geom_label(aes(label=event, y = event, x=max_date), size=2) +
xlab("Year") + ylab("LoC") +
scale_x_datetime(date_breaks = "year", date_labels = "%Y") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5))
ggplot(df)+
geom_segment(aes(y=loc, yend = loc, x = startdate, xend = enddate, colour=event),size = 5,alpha=0.6) +
geom_label(aes(label=event, y = loc, x=max_date), size=2) +
xlab("Year") + ylab("LoC") +
scale_x_datetime(date_breaks = "year", date_labels = "%Y") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) +
facet_grid(rows = vars(event), scales = "free")
reprexパッケージ(v0.3.0)によって2020-10-18に作成されました
@ArthurYipで述べたように、これをオプションとして検討してください。並べ替えを設定すると、プロットの意味に影響を与える可能性があります。ラベルを避けてfacet_grid()次の方法で使用することができます。
library(ggplot2)
#Plot
ggplot(df)+
geom_segment(aes(x=loc, xend =loc,y = startdate, yend = enddate,colour=event),size = 5,alpha=0.6) +
coord_flip() + xlab("LoC") + ylab("Year")+
facet_grid(event~.,switch = "x")
出力: