【问题标题】:creating a plot using ggplot2使用 ggplot2 创建绘图
【发布时间】:2019-06-12 21:34:20
【问题描述】:

我试图使用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")

【问题讨论】:

  • 请至少分享您的数据样本,最好使用 (1) 文字代码来生成框架(假设不需要基础 CSV 或其他文件);或 (2) dput(head(newdata)) 的输出,有足够的数据来演示绘制数据。 (请编辑您的问题并将其发布在代码块中,而不是在评论中!)
  • 您能以dput 格式发布示例数据吗?请使用dput(newdata) 的输出编辑问题。或者,如果 dput(head(newdata, 20)) 的输出太大。
  • 更新的数据输入(数据)

标签: r ggplot2


【解决方案1】:

试试:

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

【讨论】:

  • (我解决了它..我的数据框有字符列,我将它们转换为数值并绘制它..我现在工作正常..)
【解决方案2】:

要分面,您需要长格式的数据(有关“整洁”数据的描述,请参阅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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 2020-08-11
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 2016-01-01
    相关资源
    最近更新 更多