我试图使用ggplot
进行绘图,但是我是初学者。数据帧(newdata
)包含2002行和3列。当我使用基本图形plot
函数时,会得到像倒钟形的完美图形,但是当我使用ggplot2
时,不会得到类似的图形。
(我解决了..我的数据框有字符列,我将它们转换为数值,然后绘制了图..我现在工作正常。。)
现在我有两个图val vs dat1和val vs dat2,现在我需要使用facet wrap来组合它们...任何帮助将不胜感激。.
val = -1000,-999,-998至998,999,1000.
dat1 = 1.2、3.4、5.5、33.3、55.4,...
以此类推。 dat2
与y
值相似。
str(newdata)
'data.frame': 2001 obs. of 3 variables:
$ val : chr "-1000" "-999" "-998" "-997" ...
$ dat1 : num 0.229 0.235 0.247 0.25 0.249 ...
$ dat2 : num 1.97 1.98 1.98 1.98 1.98 ...
ggplot(data = newdata) +
geom_point(mapping = aes(x = val, y = dat1))
已更新..dput(数据) 因为数据非常庞大,因此我添加了一部分。
structure(list(**val** = c("-1000", "-999", "-998", "-997",
"-996", "-995", "-994", "-993", "-992", "-991"), dat1 = c(0.229377104377104,
0.23526936026936, 0.246843434343434, 0.250210437710438, 0.248526936026936,
0.252314814814815, 0.226641414141414, 0.230218855218855, 0.223484848484848,
0.236952861952862), dat2 = c(1.97385049452862,
1.97675496296296, 1.97780065909091, 1.97756823063973, 1.97745205218855,
1.98053092087542, 1.98291262079125, 1.98401634175084, 1.98796655597643,
1.98639806102694)), row.names = c(NA, 10L), class = "data.frame")
答案 0 :(得分:1)
尝试:
ggplot(data = newdata, aes(x = val, y = dat1)) + geom_line()
答案 1 :(得分:0)
首先,您需要长格式的数据(有关“整洁”数据的说明,请参见this paper)。基本上,您需要一个列来保存dat1
或dat2
的值,另一列则要区分dat1
的行和dat2
的行。
这是为您的数据集完成此操作的方法:
library(dplyr)
library(tidyr)
library(ggplot2)
# Convert from wide to long. Convert strings to numbers.
data.long = newdata %>%
gather(dat.type, dat.value, -val) %>%
mutate(val = as.numeric(val))
# Plot and facet.
ggplot(data.long, aes(x = val, y = dat.value)) +
geom_line() +
facet_wrap(~ dat.type)