我正在尝试在 r 中制作一个分组的条形图,但有些事情我无法弄清楚。这是我到目前为止:
我想:
我使用了以下代码:
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/