【问题标题】:ggplot a vector in R [duplicate]ggplot R中的向量[重复]
【发布时间】:2021-02-04 10:55:25
【问题描述】:

我可以使用plot 在 R 语言中简单地绘制一个向量,如下所示:

vec <- sqrt(1:100)
plot(vec, type = "l")

但我想用ggplot2 绘制这个向量,因为它的图更好更漂亮。但我正在努力解决它。任何帮助将不胜感激。

【问题讨论】:

  • 对不起,我是 R 新手,我不知道这些数据框的东西!
  • ?ggplot文档的第一行描述:“声明输入数据框”。对于 R 的初学者来说可能有点苛刻,对此我很抱歉,但我投了反对票,因为您有足够的声誉建议您可以阅读文档或使用此站点查找 ggplot2 的代码示例。如果您想开始使用 ggplot2,book 是个好地方,否则您可能会喜欢 tag wiki
  • @teunbrand 谢谢,你的权利我应该研究更多对不起。好吧,但我仍在努力通过 ggplot! 绘制一个简单的向量!我认为这是一个简单的 1 行代码,所以我在这里询问了这一点。但似乎没那么容易。

标签: r ggplot2


【解决方案1】:

试试这个:

ggplot(as.data.frame(vec)) + 
  geom_point(aes(vec, sqrt(vec)))

它有效,但我想建议您在制作绘图之前创建一个数据框。

假设您想要一个带有线和/或点的图。控制您所做的事情的一种方法是:

  1. 创建一个带有 x 列和 y 列的数据框

    df <- data.frame(x = 1:100, y = 1:100)
    
  2. 将数据框传递给ggplot()

    ggplot(df)
    
  3. 通过在aes 中定义xy 添加您想要的geom

    ggplot(df) + 
      geom_point(aes(x = x, y = y)) + 
      geom_line(aes(x = x, y = y))
    
  4. 自定义你的情节

注意 1:在第 3 步中,您也可以在 ggplot 中定义 aes 以不重复代码:

ggplot(df, aes(x = x, y = y)) + 
  geom_line() +
  geom_point()

注2:在aes中,=左边的xy是参数的名称,而右边的xy = 是数据框列的名称。 xy 参数的名称可以省略,只保留数据框的列名称

【讨论】:

  • 定义x = vec 不是问题吗?因为就在这种情况下它有效。一般应该怎么做?
  • 我修改了答案以尝试回答您的问题。如果它有帮助,如果你愿意,请接受它
  • 非常感谢,我知道了。您能否编辑您对data.frame(x = 1:length(vec), y = vec) 的回答,使其更笼统,以便我接受?
  • 我能做到,但不是一般的。 xy 不一定是整数的有序向量,所以x 不一定以1 的步长从1n。例如,您还可以使用 data.frame (x = runif(100, 0, 1), y = sqrt (1 : 100))。我使用的数据框只是不定式的一个例子,比写1: length(vec)
  • 我这么说是因为我的问题是在 ggplot 中绘制一个向量 vec,就像我通过 plot 函数绘制它一样。你不认为data.frame(x = 1:length(vec), y = vec) 是它的一般答案吗?
【解决方案2】:

感谢 Leonardo 的好回答,我的问题的简短回答(通过 ggplot 绘制矢量 vec)将是这样的:

d <- data.frame(x = 1:length(vec), y = vec)
ggplot(d, aes(x, y)) + geom_line()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-08
    • 2023-02-05
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 2018-03-25
    • 2020-09-27
    • 1970-01-01
    相关资源
    最近更新 更多