使用ggplot2创建图

时间:2019-06-12 21:34:20

标签: r ggplot2

我试图使用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,... 以此类推。 dat2y值相似。

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")

2 个答案:

答案 0 :(得分:1)

尝试:

ggplot(data = newdata, aes(x = val, y = dat1)) + geom_line()

答案 1 :(得分:0)

首先,您需要长格式的数据(有关“整洁”数据的说明,请参见this paper)。基本上,您需要一个列来保存dat1dat2的值,另一列则要区分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)