r 来自 Excel CSV 文件的分组条形图

标签 r matrix ggplot2 dataframe bar-chart

我正在尝试在 r 中制作一个分组的条形图,但有些事情我无法弄清楚。这是我到目前为止:

enter image description here

我想:

  • 从 data.frame(.csv 文件,见下文)创建矩阵
  • ablines 出现,但不在酒吧前面
  • 分组条形的标签(11 月、12 月、1 月、... -> 请参阅下面的数据)
  • 使情节布局如下所示。 (我基本想要剧情边框)

  • Ideal Graph

    我使用了以下代码:
    x<-matrix(nrow=3,ncol=7, data=c(200,227,196,210,279,319,220,126,111,230,196,123,240,106,94,250,154,233,260,226,218))
    tiff("p_month_all.tiff", width=600, height=300)
    par(mar=c(5,4,0.5,0.5))
    a=c("November","December","January","February","March","April","May")
    barplot(x, beside=TRUE, ylim=c(0,350),xlab="Month", axes=TRUE,axis.lty=1, ylab="Monthly Precipitation [mm]", col=c("darkblue","dodgerblue3","deepskyblue1"),panel.first= abline(h = c(50,100,150,200,250,300), col = "grey", lty = 2), xaxt="n", yaxt="n")
    par(ps=12, cex =1, cex.main=2)
    axis(2, c(0,350, c(50, 100, 150, 200, 250, 300)), las=1)
    dev.off()
    

    数据集(.csv 文件)如下所示:
    Month      Hornberg   Strick   Huetten
    November     120       278       234
    December     279       156       145
    January      328       300       299
    February     267       259       234
    March        190       201       187
    April        150       199       177
    May          147       156       160
    

    最佳答案

    为了清楚起见,我已经重写了您的代码,以便您可以更轻松地看到问题所在。

    你用 xaxt = "n" 抑制了轴和 yaxt = "n" .我删除了这些行。
    添加调用 box在绘图周围绘制框。
    添加调用 grid在图中绘制网格线。
    我已将行名和列名添加到您的数据矩阵中,以便绘图知道在轴中使用什么。
    我已经更新了情节边缘。
    我还整理了一些东西,比如用 month.name 替换月份名称。并使用 seq.int而不是硬编码的序列。

    x <- matrix(
      c(
        200, 227, 196, 
        210, 279, 319, 
        220, 126, 111,
        230, 196, 123,
        240, 106, 94,
        250, 154, 233,
        260, 226, 218
      ),
      nrow = 3,
      ncol = 7
    )
    colnames(x) <- month.name[c(11:12, 1:5)]
    rownames(x) <- c("Hornberg", "Strick", "Huetten")
    
    
    par(mar = c(5, 4, 1.5, 0.5), ps = 12, cex  = 1, cex.main = 2, las = 1)
    
    barplot(
      x, 
      beside      = TRUE, 
      ylim        = c(0,350),
      xlab        = "Month", 
      axes        = TRUE,
      axis.lty    = 1, 
      ylab        = "Monthly Precipitation [mm]",
      col         = c("darkblue", "dodgerblue3", "deepskyblue1"),
      panel.first =  abline(
        h    =  seq.int(50, 300, 50), 
        col  =  "grey", 
        lty  =  2
      )
    )
    box()
    grid()
    

    关于r 来自 Excel CSV 文件的分组条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18632307/

    相关文章:

    r - 用条件子集向量(不包括 NA)

    Ruby:条件矩阵?有多个条件的情况?

    c++ - 是否有一个 c++ 矩阵库,我可以在其中像 R 中那样使用非连续 vector 索引矩阵?

    r - 使用 ggplot,使用 scales 中的 unit_format 和 Dollar_format 进行刻度文本标记

    r - gbm::interact.gbm 与 dismo::gbm.interactions

    r - 如何获取下划线分隔的元素个数

    c# - 访问 N(未知)维矩阵中所有点的算法

    r - 在 ggplot2 中 - 如何确保 geom_errorbar 在使用 xlim() 控制 x 轴时显示所有点的条形限制

    r - 如何避免在文本注释上绘制 geom_line ?

    r - R编程语言有反射吗?