![](/img/trans.png)
[英]R multiple plots with common y-axis scaling and shared x-axis label
[英]one y-axis with shared x-axis in R
我正在嘗試從數據框的幾列中繪制數據。 每列代表 y 值,對於每一列,x 值范圍從 0 到 100。當嘗試繪制這些數據時,它們的 y 軸看起來像一個巨大的混亂(有 12 列)。 如果我可以將最小 y 值設置為 0,最大設置為 1700 左右,那么事情應該會鍛煉。 我該怎么做呢? 另外我如何擴展x軸以便我可以在它旁邊添加一個圖例(我該怎么做?)我的Rstudio無法識別ggplot所以我使用了這個代碼
plot(x-axis, y1)
par(new=T)
plot(x-axis, y2, col="darkcyan")
par(new=T)
plot(x-axis, y3, col="green")
par(new=T)
plot(x-axis, y4, col="orange")
par(new=T)
...
plot(x-axis, y12, col="blue")
par(new=T)
我還編寫了其他代碼來做同樣的事情。
matplot(x-axis,
cbind(aaaa,aaab,aaac,aaad,aaae,aaaf,aaag,aaah,
aaai,aaaj, aaak,aaal),type="l",col=c("red", "blue",
"green", "cyan", "darkcyan", "azure",
"darkkhaki","aquamarine", "brown1","deeppink",
"deepskyblue1", "blueviolet"), xlab="Return Period
(Years)", ylab="Return Years (mm)" )
legend("topright", colnames(dfreturnplot2), col=12,
cex=0.8, fill=seq_len(12))
在這里,y 軸看起來不錯,但圖例干擾了圖形的可見性。 我不能通過延長 x 軸來制作更長的 x 維度,所以我應該怎么做?
有沒有辦法讓屏幕變大,讓看到這個的人可以看到發生了什么? 是否有像 python 中的 alpha 值,以便我們可以看到位於其他幾個曲線之上的曲線?
使用傑的第二個建議后,我得到了(我仍然需要閱讀他提供的鏈接)
如何為此添加圖例。 我覺得這應該很容易,但我錯過了一些東西,埃文斯的回答現在讓我有點困惑。 有沒有辦法在顏色之后添加標簽?
將ylim
擴展一個因子,比如*1.1
並制作一個無框horiz
圖例。
matplot(m, type='l', lty=1, ylim=c(min(m), max(m)*1.1))
legend("topleft", colnames(m), col=12, cex=0.8, fill=seq_len(12), horiz=TRUE, bty='n')
如果您有更多的項目,還有一個ncol=
在legend
中的參數以將它們呈現在一個多列矩陣中,請參閱?legend
。
matplot(m, type='l', lty=1, ylim=c(min(m), max(m)*1.1))
legend("topleft", LETTERS[1:20], col=12, cex=0.8, fill=seq_len(20), ncol=10, bty='n')
您也可以擴展xlim
並保留框架,這真的非常靈活。
matplot(m, type='l', lty=1, xlim=c(0, nrow(m)*1.25))
legend("right", LETTERS[1:26], col=12, cex=0.8, fill=seq_len(20), ncol=2)
數據:
m <- sapply(1:10, \(x) plogis(seq(0, 10, .1)/x)) |> `colnames<-`(LETTERS[1:10])
我強烈建議在這里嘗試使用ggplot2
:它很好地完成了圖例,並自動轉移事物以使一切都適合。
ggplot 沒有被我的 Rstudio 識別,所以我使用了這段代碼
嘗試install.packages("ggplot2")
; 如果它失敗了,一些快速的研究應該會告訴你如何安裝它。
使用@jay.sf 的樣本數據,我們只需要將它melt
,剩下的就ggplot2
:
library(ggplot2)
transform(m, x = seq_len(nrow(m))) |>
reshape2::melt("x", variable.name = "grp", value.name = "y") |>
ggplot(aes(x, y, color = grp)) +
geom_line() +
guides(color = guide_legend(ncol = 2))
ggplot2
允許您自定義很多,包括多列圖例(如圖所示,默認為 1)、刪除圖例標題、清理背景/主題(添加+ theme_bw()
)、改變顏色/大小/線型/...按組/線/...等學習它的語義一次,你將永遠受益於它控制漂亮情節的能力(相對於你必須手動控制大型圖例的基本圖形)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.