绘制原始数据的子集

问题描述 投票:0回答:1

我正在尝试将我拥有的数据集(原始数据的子集)中的参考线添加到原始数据的散点图中。我不确定我做错了什么。重点是将 SCS-MP2 作为参考线,将其他观测值作为点,使用 In 与 BE 来查看与参考的偏差有多大。

我在 R/RStudio 中使用了以下代码:

#Load Packages
library(ggplot2); install.packages("car");
library(readxl);
library(datasets);
library(tidyr);
################# BE Results
cg <- read_excel("ReultsAllTogether_stacks.xlsx")
View(cg)
structure(cg)
cg$`BE` <- as.double(cg$`BE`)
scs_mp2 <- cg[which(cg$Functional == 'SCS-MP2'),]
structure(scs_mp2)
be_cg <- ggplot(cg, aes(x=factor(cg$In, level=c("Li", "Na", "K", "Rb", "Cs")), y=cg$`BE`,    group=cg$Class))
be_cg <- be_cg + geom_point(aes(color=cg$Functional)) 
be_cg <- be_cg + facet_grid(cg$Basis~cg$Class) + labs(x = "In", y = "BE", color = "Class Type")
be_cg <- be_cg + geom_line(aes(cg$Functional == 'SCS-MP2', color = 'pink')) 
print(be_cg)

我最终得到了下图:

数据集 -

dput()
输出:

structure(list(Functional = c("B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", 
"B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", 
"SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", 
"B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", 
"SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", 
"B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", "SCS-MP2", "B3LYP", 
"SCS-MP2"), Basis = c("b1", "b1", "b1", "b1", "b1", "b1", "b1", 
"b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", 
"b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", 
"b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1", "b1"
), Class = c("C2", "C2", "C2", "C2", "C2", "C2", "C2", "C2", 
"C2", "C2", "C3", "C3", "C3", "C3", "C3", "C3", "C3", "C3", "C3", 
"C3", "C4", "C4", "C4", "C4", "C4", "C4", "C4", "C4", "C4", "C4", 
"C5", "C5", "C5", "C5", "C5", "C5", "C5", "C5", "C5", "C5"), 
    In = c("Li", "Li", "Na", "Na", "K", "K", "Rb", "Rb", "Cs", 
    "Cs", "Li", "Li", "Na", "Na", "K", "K", "Rb", "Rb", "Cs", 
    "Cs", "Li", "Li", "Na", "Na", "K", "K", "Rb", "Rb", "Cs", 
    "Cs", "Li", "Li", "Na", "Na", "K", "K", "Rb", "Rb", "Cs", 
    "Cs"), CT = c(0.40456288154279, 0.372834665210701, 0.355454014133149, 
    0.313462952666224, 0.304072955130357, 0.251637090727318, 
    0.28181198329498, 0.222999362898535, 0.254776916782981, 0.194195055958677, 
    0.404186306229368, 0.37268736669808, 0.354997616399174, 0.31330968123421, 
    0.30365432465555, 0.251510008485998, 0.281443473835977, 0.222902895704843, 
    0.254511080266118, 0.194137507673419, 0.401871772097766, 
    0.370918519253672, 0.351142910239732, 0.310714862030015, 
    0.298069757042778, 0.247839120659505, 0.274977651015282, 
    0.218806234600371, 0.274977651015282, 0.218806234600371, 
    0.407912189945616, 0.376388091732588, 0.360278099029074, 
    0.31813744101535, 0.309981024667932, 0.257480792559644, 0.288133014562052, 
    0.229128691213999, 0.461803504626895, 0.337946512062839), 
    BE = c(-18.8252999999829, -21.1847940758919, -0.627509999985161, 
    -0.788704768746296, 2.51003999994065, -1.06039777353009, 
    3.12642801277324, -1.1722263305953, NA, NA, -25.1003999999772, 
    -28.4270313132134, -20.0803199999532, -23.0303260862894, 
    -16.3152600000422, -21.3725136924209, -14.4327300000154, 
    -19.2799058945922, -11.9226900000034, -18.1946901005642, 
    -27.6104399999892, -31.334467121123, -28.8654600000308, -32.3045724807506, 
    -15.0602400000719, -21.3828236816955, -11.9226900000748, 
    -17.9596938806561, -5.64759000008047, -16.4690752511992, 
    -20.0803200000245, -23.5808468844384, -23.8453800000068, 
    -34.772600686251, -25.727910000105, -33.2706429510877, -23.217870000093, 
    -29.9168843805051, -20.707830000081, -29.0829361406804)), row.names = c(NA, 
-40L), class = c("tbl_df", "tbl", "data.frame"))
r ggplot2 subset geom
1个回答
0
投票

解决一些问题的一个解决方案:

  • 您需要告诉 ggplot2 使用子集数据
    geom_line()
  • 您不需要为每个变量使用
    cg$
  • 要为线
    pink
    着色,它应该位于
    aes()
    调用之外
library(ggplot2)
cg$BE <- as.double(cg$BE)
scs_mp2 <- cg[which(cg$Functional == "SCS-MP2"), ]

be_cg <- ggplot(
  cg,
  aes(x = factor(In, level = c("Li", "Na", "K", "Rb", "Cs")), 
      y = BE, 
      group = Class)
) +
  geom_point(aes(color = Functional)) +
  facet_grid(Basis ~ Class) +
  labs(x = "In", y = "BE", color = "Class Type") +
  geom_line(data = scs_mp2, color = "pink")
be_cg

您可能还想对数据进行子集化,因为您不希望

"SCS-MP2"
值也绘制为点和线。

© www.soinside.com 2019 - 2024. All rights reserved.