使用数据框的值,作为使用ggplot2创建的图的轴的值

时间:2014-05-22 13:28:56

标签: r ggplot2 dataframe date-range

我正在使用ggplot2库来绘制两个data.frames的线性图。下面我把data.frames和我的函数放在一起。问题在于,在X轴和Y轴上,条约周围的值范围不会出现,只有4个值中的1个。对于X轴值,我使用的是power_value列data.frame DF_N_EPC_AND_FOUND_EPC的值。另一个我正在使用data.frame获取一个常量值。我想看到X轴和Y轴的整个值范围,我不知道该怎么做。

我的功能:

LINER_GRAPH_POWER_LIST_VALUES<-function(DF_N_EPC_AND_FOUND_EPC, DF_READ_EXTERNAL_LIST_EPC_TAGS ){
  require(reshape2)
  df.m <- melt(DF_N_EPC_AND_FOUND_EPC, id=c("power_value"), measure=c("total_epc","found_epc"), variable.name="epc")
  require(ggplot2)
  ggplot(df.m, aes(x=power_value, y=value, color=epc)) +
    geom_line() +
    geom_point() +
    geom_hline(yintercept=nrow(DF_READ_EXTERNAL_LIST_EPC_TAGS), color="green")
}

DF_N_EPC_AND_FOUND_EPC data.frame:

power_value total_epc found_epc
1         31.0        11         5
2         30.5        12         5
3         30.0        11         5
4         29.5        11         5
5         29.0        10         5
6         28.5        11         5
7         28.0        11         5
8         27.5        10         4
9         27.0        10         4
10        26.5        10         4
11        26.0        10         4
12        25.5        10         3
13        25.0         9         3

DF_READ_EXTERNAL_LIST_EPC_TAGS data.frame:

TAGS_IDE
1 00000000000000000000A288
2 000000000000000CCC002001
3 00000000000000000000A194
4 00000000000000000000A284
5 00000000000000000000A332
6 00000000000000000000A002
7 00000000000000000000A262
8 00000000000000000000A261

enter image description here

2 个答案:

答案 0 :(得分:2)

要向x-axis添加所有需要的标签,请在ggplot功能中添加以下行:

scale_x_continuous(breaks = c(..add the desired breaks here..))
像这样:

ggplot(df.m, aes(x = power_value, y = value, color = epc)) +
  geom_line() +
  geom_point() +
  scale_x_continuous(breaks = c(25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0,30.5,31.0)) +
  geom_hline(yintercept = nrow(DF_READ_EXTERNAL_LIST_EPC_TAGS), color = "green")

给出:

enter image description here

在您的函数中实现:

LINER_GRAPH_POWER_LIST_VALUES <- function(DF_N_EPC_AND_FOUND_EPC, DF_READ_EXTERNAL_LIST_EPC_TAGS ){
  require(reshape2)
  df.m <- melt(DF_N_EPC_AND_FOUND_EPC, id = c("power_value"), measure = c("total_epc","found_epc"), variable.name = "epc")
  require(ggplot2)
  ggplot(df.m, aes(x = power_value, y = value, color = epc)) +
    geom_line() +
    geom_point() +
    scale_x_continuous(breaks = c(df.m$power_value)) +
    geom_hline(yintercept = nrow(DF_READ_EXTERNAL_LIST_EPC_TAGS), color="green")
}

如果您也想对y-axis执行此操作,则可以使用scale_y_continuous执行相同的操作。

答案 1 :(得分:0)

几乎完美:)非常感谢,只有一个小细节。这些值来自可以改变的data.frame,如下所示:

LINER_GRAPH_POWER_LIST_VALUES<-function(DF_N_EPC_AND_FOUND_EPC, DF_READ_EXTERNAL_LIST_EPC_TAGS ){
  require(reshape2)
  df.m <- melt(DF_N_EPC_AND_FOUND_EPC, id=c("power_value"), measure=c("total_epc","found_epc"), variable.name="epc")
  require(ggplot2)
  ggplot(df.m, aes(x=power_value, y=value, color=epc)) +
    geom_line() +
    geom_point() +
    scale_x_continuous(breaks=c(DF_N_EPC_AND_FOUND_EPC$power_value)) +
    geom_hline(yintercept=nrow(DF_READ_EXTERNAL_LIST_EPC_TAGS), color="green")
}

非常感谢你:)