我正在尝试使用不同颜色的非重叠正方形填充正方形区域,并且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内部大小的正确值,以便正方形完美堆叠。
非常感谢
答案 0 :(得分:1)
使用geom_tile
而不是geom_point
可能会更好,因为这样可以更好地控制矩形的大小和边框宽度。有关详细信息,请参阅?geom_tile
。
答案 1 :(得分:0)
使用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),因此切片为正方形:
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()