5
我有一個情節(示例代碼粘貼在下面),我試圖通過自己的標籤添加系列信息。我不想繪製「p1s1」「p1s2」「p3s4」,我想要「處理1」「處理2」「處理3」。我已經使用關卡(series_id)來獲取唯一的系列名稱,並使用查找表來獲取描述。 (我認爲這讓他們按照他們繪製的順序?),並且我在一個名爲treatment_descriptions的矢量中有這些描述。如何將自定義系列標籤添加到R的ggplot中的圖例?
從文檔我認爲我應該在這裏使用一個規模,但我不知道哪一個,或者如何去做。類似於:scale_something(name =「Treatment Descriptions」,breaks = NULL,labels = treatment_descriptions,formatter = NULL)?但是這應該去哪裏?
library(ggplot2)
# Create a long data.frame to store data...
growth_series = data.frame ("read_day" = c(0, 3, 9, 0, 3, 9, 0, 2, 8),
"series_id" = c("p1s1", "p1s1", "p1s1", "p1s2", "p1s2", "p1s2", "p3s4", "p3s4", "p3s4"),
"mean_od" = c(0.6, 0.9, 1.3, 0.3, 0.6, 1.0, 0.2, 0.5, 1.2),
"sd_od" = c(0.1, 0.2, 0.2, 0.1, 0.1, 0.3, 0.04, 0.1, 0.3),
"n_in_stat" = c(8, 8, 8, 8, 7, 5, 8, 7, 2)
)
> # Now gives us some example long form data...
> > growth_series
> read_day series_id mean_od sd_od n_in_stat
> 1 p1s1 0.6 0.10 8 2
> 3 p1s1 0.9 0.20 8 3
> 9 p1s1 1.3 0.20 8 4
> 0 p1s2 0.3 0.10 8 5
> 3 p1s2 0.6 0.10 7 6
> 9 p1s2 1.0 0.30 5 7
> 0 p3s4 0.2 0.04 8 8
> 2 p3s4 0.5 0.10 7 9
> 8 p3s4 1.2 0.30 2 2
# Plot using ggplot...
ggplot(data = growth_series, aes(x = read_day, y = mean_od, group = series_id, color = series_id)) +
geom_line(size = 1.5) +
geom_point(aes(size = n_in_stat)) +
geom_errorbar(aes(ymin = mean_od - sd_od, ymax = mean_od + sd_od), size = 1, width = 0.3) +
xlab("Days") + ylab("Log (O.D. 730 nm)") +
scale_y_log2() +
scale_colour_hue('my legend', breaks = levels(growth_series$series_id), labels=c('t1', 't2', 't3'))
謝謝,第一個建議的工作,第二個也沒有,我會保持開放的問題,現在,因爲我認爲應該有更好的方法來做到這一點。我的描述很長,所以讓他們在桌面上看起來非常醜陋,但我想我不需要把它們放到桌子上,直到我進行繪圖之前,所以這不是什麼大問題。乾杯,約翰 – John 2010-02-26 16:49:58
第二個有什麼問題?順便說一句,「...」代表你的組ggplot()+ geom_line + .. + scale_y_log2 – xiechao 2010-02-26 17:04:16
當然,我嘗試過,但是我得到一個語法錯誤,它是否適合你? – John 2010-02-26 20:35:28