2017-10-16 77 views
0

我建立的曲線圖,其中每個點具有基於線性梯度在兩個單獨的列創建大小和在GGPLOT2延伸超出本

df1 <- data.frame (x = c(1:10), y = c(1:10), pointSize = 1:10, pointCol = 1:10) 

ggplot(df1, aes(x = x, y = y, colour = pointCol, size = pointSize)) + geom_point() + 
    scale_colour_gradient(low = "steelblue", high = "yellow") 

的一個的大小和顏色的值的點的顏色的梯度表格中編碼顏色和點大小的列的最大值是10.我可以更改漸變大小,使其從say = 10到20?

+1

不知道你在問什麼,顏色將基於數據和低和高梯度。你想添加不同的顏色? 'scale_color_gradientn' – Tunn

+0

'scale_size_continuous(range = c(10,20))'?也許試圖描述你的理想輸出,與當前輸出相關,澄清... – Nate

+0

對不起,更清晰。我有兩個散點圖,我希望它們具有相同的磅值尺寸,但我不能將它們拼湊在一起(我已經有太多的面)。所以我有一個問題,因爲在圖1中最大尺寸值是10,而在圖2中是20。但是我希望尺寸值10對應的尺寸在兩個圖中都是相同的 –

回答

0

您可以爲兩個圖定義相同的尺寸比例限制。這裏有一個例子:

樣本數據集:

df1 <- data.frame (x = 1:10, y = 1:10, pointSize = 1:10, pointCol = 1:10) 
df2 <- data.frame (x = 1:10, y = 10:1, pointSize = 11:20, pointCol = 1:10) 

情節不規範刻度大小(我們可以在曲線上所看到大小10 1場比賽中積2尺寸20):

p1 <- ggplot(df1, aes(x = x, y = y, colour = pointCol, size = pointSize)) + 
    geom_point() + 
    scale_colour_gradient(low = "steelblue", high = "yellow") + 
    theme_bw() 

p2 <- ggplot(df2, aes(x = x, y = y, colour = pointCol, size = pointSize)) + 
    geom_point() + 
    scale_colour_gradient(low = "steelblue", high = "yellow") + 
    theme_bw() 

gridExtra::grid.arrange(p1, p2, nrow = 1) 

plot1

現在讓我們定義兩者的相同比例限制:

size.limits <- range(df1$pointSize, df2$pointSize) 

> size.limits 
[1] 1 20 

的大小尺度添加到每個小區(我們現在可以看到兩個地塊共享相同尺寸的傳奇,並在情節1最大的點是大小相同的情節2最小點):

gridExtra::grid.arrange(p1 + scale_size(limits = size.limits), 
         p2 + scale_size(limits = size.limits), 
         nrow = 1) 

plot2