这是我的数据集中的前9行(54个)和前8个列(1003个中)
stream n rates means 1 2 3 4
1 Brooks 3 3.0 0.9629152 0.42707006 1.9353659 1.4333884 1.8566225
2 Siouxon 3 3.0 0.5831929 0.90503736 0.2838483 0.2838483 1.0023212
3 Speelyai 3 3.0 0.6199235 0.08554021 0.7359903 0.4841935 0.7359903
4 Brooks 4 7.5 0.9722707 1.43338843 1.8566225 0.0000000 1.3242210
5 Siouxon 4 7.5 0.5865031 0.50574543 0.5057454 0.2838483 0.4756304
6 Speelyai 4 7.5 0.6118634 0.32252396 0.4343109 0.6653132 2.2294652
7 Brooks 5 10.0 0.9637475 0.88984211 1.8566225 0.7741612 1.3242210
8 Siouxon 5 10.0 0.5804420 0.47501800 0.7383634 0.5482181 0.6430847
9 Speelyai 5 10.0 0.5959238 0.15079491 0.2615963 0.4738504 0.0000000
这是一个简单的图,我使用 means
列中找到的值为流名称Speelyai(18)的所有行 .
均值列是通过取整行的平均值来计算的 . 每列代表1次模拟 . 因此,平均列是1000次模拟的平均值 . 我想在图上绘制实际的模拟值 . 我认为不仅要绘制平均值(用线),而且还要将数据(模拟)显示为点,这样才能提供信息 . 我看到我可以使用 geom_point()
,但我不知道如何获得具有流名称"Speelyai"的任何行的所有点
谢谢
正如你所看到的,尺度差异很大,我认为这些尺度是模拟结果或重新采样原始数据的结果 . 但是,我怎样才能以保留视觉内容的方式在原始图像上叠加这些点?在这张图片中,线看起来几乎是扁平的,但在我的原始图像中,我们可以看到它波动很大,只是在一个小规模......
2 回答
同意@NickKennedy认为从长到长重塑数据是一个好主意:
现在是时候重新计算方法了:
所以现在你可以绘制:
这正是你所拥有的,所以现在让我们添加点:
请注意,在调用
geom_point
时,您需要专门声明data=
,因为您使用的是与您在ggplot
调用中指定的数据集不同的数据集 .========== EDIT TO ADD =============
回复你的评论,并从答案借用@akrun给你here,你需要添加错误的计算,然后将调用更改为
geom_point
:然后将调用更改为
geom_point
:我建议以长格式而不是宽格式重新格式化数据 . 例如:
请注意,这也会重新计算数据中的均值 . 如果您想使用现有的方法,您可以: