凡例を私のプロットの1つに追加したいのですが、さまざまな美学があり、凡例を作成したことはありません。さまざまなタイプの美学を持つggplotヒストグラムに凡例を追加します
私の美学の1つは、手動でベクトルとして追加した塗りつぶしコードです。もう一つの美学は、geom_vlineで追加した縦線です。
以下のグラフから、凡例に追加する3つの特性があります。1)濃い青色のバー、2)薄い青色のバー、3)縦線。
これを効率的にコーディングする方法について、誰かから私に提案がありますか?
#df
df <- data.frame(Time_Diff <- runif(1000, 0, 200))
# Show median, IQR range and outliers
colors <- c(rep("blue",3), rep("paleturquoise2",38))
bp_overall <- ggplot(data = df, aes(Time_Diff))
bp_overall +
geom_histogram(binwidth = 5, fill = colors) + #create histogram
ggtitle("Time Difference") +
xlab("Time in Days") +
ylab("Amount") +
geom_vline(xintercept = 3, linetype = "twodash", size = 1, colour= "darkblue") + #show median
scale_x_continuous(breaks = seq(0, 202, 10)) +
theme_light() +
theme(panel.grid.minor = element_blank(),
panel.border = element_blank(), #remove all border lines
axis.line.x = element_line(size = 0.5, linetype = "solid", colour = "black"), #add x-axis border line
axis.line.y = element_line(size = 0.5, linetype = "solid", colour = "black")) + #add y-axis border line
theme(plot.title = element_text(family = windowsFont("Verdana"), color="black", size=14, hjust = 0.5)) +
theme(axis.title = element_text(family = windowsFont("Verdana"), color="black", size=12))
Djorkの提案の後、私は次のスクリプトに到着しました。このスクリプトはうまくいきました。私は満足しています。私が現在達成しようとしている唯一のことは、伝説を一つの全体にすることです(ヒストグラムの伝説と線の伝説は一貫性のある全体に結合されます)。誰でも提案がありますか?私はJimbouの提案@考える
# reformat data
set.seed(1)
df <- data.frame(runif(1000, 0, 200))
colnames(df) <- "Time_Diff"
bp_overall +
geom_histogram(data = subset(df, Time_Diff <= 12.5), aes(x = Time_Diff, fill="BAR BLUE"), binwidth = 5) + # subset for blue data, where aes fill is fill group 1 label
geom_histogram(data = subset(df, Time_Diff > 12.5), aes(x = Time_Diff, fill="BAR TURQUOISE"), binwidth = 5) + # subset for turquoise data, where aes fill is fill group 2 label
scale_fill_manual("Histogram Legend", values=c("blue", "paleturquoise2")) + # manually assign histogram fill colors
geom_vline(aes(xintercept = 3, colour="LINE DARK BLUE"), linetype="twodash", size = 1) + # where aes colour is vline label
scale_colour_manual("Line Legend", values="darkblue") + #removed legend title
scale_x_continuous(breaks = seq(0, 202, 10)) +
ggtitle("Time Difference") +
xlab("Time in Days") +
ylab("Amount") +
theme_light() +
theme(panel.grid.minor = element_blank(),
panel.border = element_blank(),
axis.line.x = element_line(size = 0.5, linetype = "solid", colour = "black"),
axis.line.y = element_line(size = 0.5, linetype = "solid", colour = "black"),
legend.position = c(0.95, 0.95),
legend.justification = c("right", "top"),
legend.box.just = ("right"))
で
legend.margin
を使用して上下に余白を取り除きますこの伝説は 'aes()'の中に特性を指定することです。したがって、統計と列を含むdata.frameを色で変換する必要があります。 [ここ](http://www.cookbook-r。com/Graphs/Legends_(ggplot2)/)または[ここ](https://stackoverflow.com/questions/24932940/ggplot-does-not-show-legend-in-geom-histogram) – Jimbou@ジンバウ私は理解していると思うデータフレームを変換することとはどういう意味ですか?私はこの問題を解決しました(下記のコードを参照してください)。しかし、ggplotの図のコードを調整する方法がわかりません。 – SHW