我正在尝试使用barplot()
在R中绘制图。但是我遇到了一些问题。首先,我要附上绘图的图像以及用于绘图的代码。然后我在描述问题。
图像:
这是我用来生成该图的代码段。
par(mar=c(14, 7, 2, 2), mgp=c(5,2,0))
midpts<-barplot(x[,input$year],
main=input$year,
ylab="Number of Units",
xlab="Product",col='maroon')
vps <- baseViewports()
pushViewport(vps$inner, vps$figure, vps$plot)
grid.text(rownames(x),
x = unit(midpts, "native"), y=unit(-1, "lines"),
just="right", rot=90)
popViewport(3)
问题:
1)整个图块总体上看起来也很小,我希望它更大。
2)Y轴上的某些标记不可见。缺少的标记取决于“年份”下拉列表。几年后,所有的Y轴标记都会出现,而另一些标记将像这样丢失一些。
3)有人还能告诉我如何使我的X标签(“产品”)和Y标签(“单位数”)加粗且与众不同,以便与标记区分开吗?
注意:此图是R-Shiny仪表板的一部分,但我认为这与进行更改无关。
1)大小
您有一个固定的区域可以直观显示该图,因此很难看到如何放大它。
解决此问题的一种方法是减小文本标签和页边距的大小,因此条形图会有更大的区域。
[2)Y轴标记
这是由于两个原因:1-您将它们显示为与y轴平行对齐,因此它们占用了大量空间,而2-字体很大,因此它们重叠了。在这种情况下,最好不要显示某些标签,而不要重叠标签。
要解决此问题,您可以考虑将标签旋转90度。
3)加粗标签
您可以通过调用控制这些选项的单独函数title()
来向图中添加标签。
[4)额外
我建议删除您正在执行的“ viewPort”操作,因为这特定于网格图形。
总体而言,这是一个包含代码的版本,应该可以解决您的大多数问题。您没有提供使用的数据集,所以我改用“ USArrests”。
par(mar=c(7, 7, 2, 2), mgp=c(5,2,0))
mids <- barplot(USArrests$Assault, col='maroon', las=2, cex.names=0.7, cex.axis=0.7)
mtext(rownames(USArrests), 1, at=mids, las=2, cex=0.7)
title("Assault")
title(xlab="states", font.lab=2)
title(ylab="Number of Units", font.lab=2)