簡體   English   中英

ggplot2繪制的點數超過要求

[英]ggplot2 plots more points than asked

我試圖用不同顏色的非重疊正方形填充正方形區域,並且ggplot2在較高的x和y限制處比數據框中的點繪制更多的點。 這是代碼

l = 1000
a=seq(0,1, 1/(l-1))
x=rep(a, each=length(a))
y=rep(a, length(a))

k = length(x)
c=sample(1:10, k, replace = TRUE)

data <- data.frame(x, y, c)

ggplot(data, aes(x=x, y=y)) + geom_point(shape=15, color=c)

ggsave('k.jpg', width=10, height=10)

我用RStudio得到的結果是這樣。 請注意圖像右側和頂部的額外點。

在此處輸入圖片說明

我如何才能讓ggplot專門為數據幀中的那些點專門繪制一個正方形,而不是更多?

作為第二個相關問題,如果l從1000更改為l = 100,會發生什么情況

在此處輸入圖片說明

我的問題是,正方形沒有完全堆疊在一起,在它們之間留有空白。 我想知道如何從數組(l)的每個維度中的點數計算geom_point內的size的正確值,以使正方形完美堆疊。

非常感謝

使用geom_tile而不是geom_point可能會更好,因為這樣可以更好地控制矩形的大小和邊框的寬度。 有關詳細信息,請參見?geom_tile

使用OP的示例提供一些替代方法,減小數據框的尺寸以增加切片的大小:

數據

library(ggplot2)
l = 100
a = seq(0, 1, 1 / (l - 1))
x = rep(a, each = length(a))
y = rep(a, length(a))
k = length(x)
c = sample(1:10, k, replace = TRUE)
data <- data.frame(x, y, c)

例子1

非常簡單,只需粘貼"white"作為colour即可使瓷磚更具特色。

ggplot(data, aes(x = x, y = y, fill = c)) + geom_tile(colour = "white")

在此處輸入圖片說明

例子2

手動創建一個調色板,並使用coord_equal強制指定比例(默認為1),以便將圖塊coord_equal正方形:

colors<-c("peachpuff", "yellow", "orange", "orangered", "red", 
          "darkred","firebrick", "royalblue", "darkslategrey", "black")
ggplot(data, aes(x = x, y = y)) +
  geom_tile(aes(fill = factor(c)), colour = "white") +
  scale_fill_manual(values = colors, name = "Colours") +
  coord_equal()

在此處輸入圖片說明

比較geom_point和geom_tile

創建較小的數據框(10 x 10, l = 10 ),以更仔細地觀察使用geom_point而不是geom_tile時發生的情況。

原始OP代碼

ggplot(data, aes(x = x, y = y)) + geom_point(shape = 15, color = c)

在此處輸入圖片說明

例子1

ggplot(data, ae(x = x, y = y, fill = c)) + geom_tile(colour = "white")

在此處輸入圖片說明

例子2

colors<-c("peachpuff", "yellow", "orange", "orangered", "red", 
          "darkred","firebrick", "royalblue", "darkslategrey", "black")
ggplot(data, aes(x = x, y = y)) +
  geom_tile(aes(fill = factor(c)), colour = "white") +
  scale_fill_manual(values = colors, name = "Colours") +
  coord_equal()

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM