2014-04-08 31 views
0

我有一個我在g中使用ggplot2繪製的圖,我想向y軸添加一個水平文本標籤。但是,根據我的文本的長度,R會相應地壓縮我的繪圖以創建固定寬度的圖像。但是,無論文本的寬度如何,我都需要這些圖的長度相同,並且具有相同的起始位置和停止位置(邊距)。如何在不改變繪圖寬度的情況下使用ggplot2在R中添加可變大小的y軸標籤?

我試圖通過覆蓋默認GGPLOT2主題元素,像這樣改變打印邊距:

library(ggplot2) 
png(filename="sample.png", width=5600, height=70) 
plot.data <- data.frame(start.points=c(my_start),end.points=c(my_stop)) 
p <- ggplot(plot.data) 
p + geom_rect(aes(xmin=start.points, xmax=end.points, ymin=0, ymax=1), fill="red") + theme_bw() + ylab("sample_title") + 
theme(axis.title.y = element_text(size = 30, colour = "black", angle = 0), axis.text = element_blank(), legend.key = element_blank(), axis.ticks = element_blank(), plot.margin = unit(c(0.1, 0.1, 0.1, 12), "lines")) 
dev.off() 

所以這使得一個很好的情節,但是根據我的軸標籤上的整個情節拉伸或壓縮。有人可以幫助我找到一種方法來保持繪圖寬度和邊距靜止,同時更改軸標籤文本?如果軸標籤文本太長,並且它延伸到左側圖像邊界之外,那麼沒關係,只要圖不改變。

感謝您的幫助!我一直對此感到頭痛太久。

回答

1

更改頁邊距在這種情況下沒有幫助,因爲他們只是除了您的軸標籤添加一定的間隔。您可以將您的軸標貼上您的預期最大長度以保持尺寸相同,但這不是最優雅的解決方案,但我認爲element_text此刻可以做一個固定寬度(也許有人可以糾正我)。不管怎麼說,你可以嘗試以下操作之一:

ylab(sprintf("%40s", "sample_title")) 

(填充軸標題40個字符用空格 - 雖然總寬度將仍取決於您的字體)

ylab(paste(sprintf("%40s", ""), "\nsample_title\n") 

(添加一行40位以上的座標軸標題和下方的空行 - 只要應該總是給你相同的寬度爲軸心的標題是不是長於)

+0

謝謝你!你的回答幫了我很多! – jake9115

相關問題