【问题标题】:Colouring scatter graph by type in r在 r 中按类型着色散点图
【发布时间】:2016-04-22 18:46:59
【问题描述】:
有没有一种方法可以在 R 中创建散点图并按类别为点着色?例如,我有一个包含 x 和 y 点列表的数据集(“Xpoints”和“Ypoints”列的范围从 0 到 100),但每个组合的 x&y 点属于五个类别之一(在第三列中)类别')。
我想绘制所有组合的 x&y 点并按其各自的类别为每个点着色。
我猜这五个类别必须在附加列中分配数字 1 到 5。但是绘制这个的代码是什么?
【问题讨论】:
标签:
r
scatter-plot
scatter
【解决方案1】:
使用广泛用于此类应用程序的ggplot2 包。
# toy data
my_data <- data.frame(x = sample(1:100, replace = T, 100),
y = sample(1:100, replace = T, 100),
cat = sample(c('first', 'second', 'third'), replace = T, 100)
)
# required packages
require(ggplot2)
# make the graph
ggplot(data = my_data, aes(x = x, y = y, color = cat)) +
geom_point()
ggsave(height = 4, width = 4, filename = 'SO36801313.png')
上面的代码提供了下图。
【解决方案2】:
这对于图形包Lattice 来说是一项非常容易的任务。它专为多变量分析而设计,可以非常轻松地处理。
我加载数据集iris 以提供示例。
library(lattice)
data("iris")
names(iris)
Lattice 允许立即绘制多面图,根据第三个变量显示两个变量之间的关系。在这种情况下,我们检查了花的萼片长度和萼片宽度之间的关系,但对于数据集中的每个species。用公式x ~ y | z表示。
xyplot(Sepal.Length ~ Sepal.Width | Species, data = iris)
xyplot(Sepal.Length ~ Sepal.Width, data = iris,
groups = Species,
auto.key = TRUE)
对于您的情况,我们会将所有观察结果绘制在一个标准图中。在这种情况下,参数groups 将根据您选择的标准自动为每个观察值着色,在这种情况下,再次为species。