我正在尝试创建一个图表,因为图表上有很多点,在绿色的边缘它开始褪色为黑色,而中心保持绿色。我目前用于创建此图表的代码是:
plot(snb$px,snb$pz,col=snb$event_type,xlim=c(-2,2),ylim=c(1,6))
我研究了等高线绘图,但这对此不起作用。着色变量是因子变量。
谢谢!
这是一个很大的问题ggplot2
。
首先,读取数据:
snb <- read.csv('MLB.csv')
使用您的数据框,您可以尝试绘制部分透明的点,并根据因子将它们设置为着色event_type
:
require(ggplot2)
p1 <- ggplot(data = snb, aes(x = px, y = py, color = event_type)) +
geom_point(alpha = 0.5)
print(p1)
然后你得到这个:
或者,您可能想考虑使用 将其绘制为热图geom_bin2d()
,并为每个不同的 绘制构面(子图)event_type
,如下所示:
p2 <- ggplot(data = snb, aes(x = px, y = py)) +
geom_bin2d(binwidth = c(0.25, 0.25)) +
facet_wrap(~ event_type)
print(p2)
它为因子的每个级别绘制了一个图,其中颜色将是每个箱中的数据点数,每侧为 0.25。但是,如果您有超过 5 或 6 个级别,这可能看起来很糟糕。从您提供的小数据样本中,我得到了这个
如果因素的水平无关紧要,这里有一些很好的例子,说明点太多的图。您还可以尝试查看ggplot 网站或R 食谱上的一些示例。
正如@BenBolker 指出的那样,透明度可以提供帮助,这很容易实现adjustcolor
:
colvect = adjustcolor(c("black", "green"), alpha = 0.2)
plot(snb$px, snb$pz,
col = colvec[snb$event_type],
xlim = c(-2,2),
ylim = c(1,6))
它内置于ggplot
:
require(ggplot2)
p <- ggplot(data = snb, aes(x = px, y = pz, color = event_type)) +
geom_point(alpha = 0.2)
print(p)