use*_*748 5 plot r scatter-plot ggplot2 lattice
我有一个all看起来像这样的数据框:
现在我想创建一个散点图,其中x轴的列标题和相应的值作为数据点.例如:
7| x
6| x x
5| x x x x
4| x x x
3| x x
2| x x
1|
---------------------------------------
STM STM STM PIC PIC PIC
cold normal hot cold normal hot
Run Code Online (Sandbox Code Playgroud)
这应该很容易,但我无法弄清楚如何.
问候
如果你想使用Hadley绘图,基本的想法ggplot2是获取表格的数据:
x y
col_names values
Run Code Online (Sandbox Code Playgroud)
这可以通过使用meltHadley的功能来完成reshape2.不要?melt看到可能的参数.但是,这里因为我们想要融化整个data.frame,我们只需要,
melt(all)
# this gives the data in format:
# variable value
# 1 STM_cold 6.0
# 2 STM_cold 6.0
# 3 STM_cold 5.9
# 4 STM_cold 6.1
# 5 STM_cold 5.5
# 6 STM_cold 5.6
Run Code Online (Sandbox Code Playgroud)
在这里,x将是列variable,y并将是相应的value列.
require(ggplot2)
require(reshape2)
ggplot(data = melt(all), aes(x=variable, y=value)) +
geom_point(aes(colour=variable))
Run Code Online (Sandbox Code Playgroud)
如果您不想要颜色,那么只需删除aes(colour=variable)geom_point内部即可geom_point().

编辑:我应该在这里提一下,你也可以geom_point用geom_jitter那个替换它,给你,好吧,抖动点:

这里有两个选项需要考虑.第一个使用dotplot"格子"包:
library(lattice)
dotplot(values ~ ind, data = stack(all))
Run Code Online (Sandbox Code Playgroud)

第二个使用dotchart基础R的"图形"选项.要使用该dotchart功能,您需要包装您data.frame的as.matrix:
dotchart(as.matrix(all), labels = "")
Run Code Online (Sandbox Code Playgroud)
请注意,此图形中的点不是 "抖动",而是按记录顺序显示.也就是说,最低点是第一个记录,最高点是最后一个记录.如果你放大了这个例子的情节,你会发现你有16条非常微弱的水平线.每行代表每列的一行.因此,如果您查看"STM_cold"或任何其他具有NA值的变量的点,您会在顶部看到一些空白行,其中没有可用数据.
这有其优点,因为如果按时间顺序记录值,它可能会显示随时间变化的趋势,但如果源数据框中的行太多,则可能也会有缺点.
