如何编辑ggplot y轴上的数字

时间:2014-12-07 17:49:39

标签: r bar-chart

我正在尝试为我的数据创建一个漂亮的条形图。到目前为止,我一直在使用ggplot函数:

    library(ggplot2)
    ggplot(dframe1, aes(x=Site, y=lambda.max)) + geom_bar(stat="identity") + 
    labs(x="Site", y="Lambda maximum")

This is so far what I have come up with

y轴上的数据需要数百(不是数千),我不知道如何改变它。另外我想知道是否可以在一个条形图或图表上表示所有这些数据?:

    structure(list(Site = structure(c(2L, 2L, 2L, 2L, 3L, 3L, 3L, 
    3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 1L, 1L, 1L), .Label = c("6", 
    "2", "3", "4", "5"), class = "factor"), weight = c(0.193, 0.249, 
    0.263, 0.262, 0.419, 0.204, 0.311, 0.481, 0.326, 0.657, 0.347, 
    0.239, 0.416, 0.31, 0.314, 0.277, 0.302, 0.403), cell.count = c(2530000, 
    729000, 336000, 436000, 292000, 0, 2e+05, 6450000, 2e+05, 18700000, 
    7430000, 9920000, 22700000, 21600000, 227000, 169000, 5e+05, 
    283000), eleocyte = c(1270000, 17, 7.3, 264000, 0, 0, 2e+05, 
    0, 2e+05, 2270000, 0, 9920000, 22700000, 442, 153000, 169000, 
    5e+05, 283000), lambda.max = c(459L, 459L, 459L, 459L, 462L, 
    462L, 462L, 462L, 462L, 465L, 465L, 465L, 465L, 490L, 490L, 475L, 
    475L, 475L), avepb.ppm = c(390.2, 373.3, 340.13, 403.2, 248.53, 
    206.7, 238.5, 190.6, 597.2, 206.8, 174.4, 186.3, 138.5, 269.55, 
    58.1, 5.225, 4.02, 6.85), aveworm.pb.ppm = c(9.59, 9.446, 4.193, 
    21.9, 1.66, 7.415, 13.11, 3.01, 51.5, 5.985, 4.705, 26.38, 2.38, 
    4.44, 4.67, 0.11, 0.085, 0.096), aveworm.g = c(0.09125, 0.264, 
    14.699, 0.2425, 0.4793, 0.051, 0.0635, 0.0465, 0.2645, 0.0559, 
    0.0795, 0.05765, 0.0846, 0.457, 0.0625, 0.0535, 0.1576, 0.16)), .Names = c("Site", 
    "weight", "cell.count", "eleocyte", "lambda.max", "avepb.ppm", 
    "aveworm.pb.ppm", "aveworm.g"), row.names = c(NA, -18L), class = "data.frame")

1 个答案:

答案 0 :(得分:1)

(1)如何将y更改为百分离

continuous_y_axis为您提供了一些选项,例如commadollarpercent。我不认为你想要的百元是内置的。

但是,在这种情况下,您可以简单地将y除以单位(100)。并将单位添加到y标签。

library(ggplot2)
unit <- 100
ggplot(dframe1, aes(x=Site, y=lambda.max/unit)) + geom_bar(stat="identity") + 
  labs(x="Site", y=paste0("Lambda maximum: Unit: ", unit))

enter image description here

(2)我可以将所有数据整合到一个图中

我认为将所有变量拟合到一个图中是个好主意。就像躲避的条形图here一样。因为所有变量都有不同的比例,如果你把所有变量都放在一个图中。其中一些将是不明显的。

以下是facet_wrapreshape可以为您做的事情。

library(reshape2)
dframe2 <- melt(dframe1, id="Site")
ggplot(dframe2, aes(x=Site, y=value)) + geom_bar(stat="identity") + facet_wrap(~variable, scales="free")

enter image description here

(3)在小组内发送消息

在这种情况下,每个站点内的所有记录都需要被视为单个记录,在这种情况下,我为每条记录创建了一个名为row的变量,您可以改进该部分。

dframe1$row <- row.names(dframe1)
library(reshape2)
dframe2 <- melt(dframe1, id=c("Site", "row"))
ggplot(dframe2, aes(x=as.numeric(row), fill=Site, y=value)) + geom_bar(stat="identity") + facet_wrap(~variable, scales="free")

enter image description here