我想使用ggplot绘制类似于此的图形,其中轴名称(表示为单位)沿轴显示,而不是沿轴的中间显示。
我唯一想到的R方法是添加一个文本对象,但是如果我想一起显示一些相似的图形,可能会导致对齐不一致。制作完图形后的编辑也似乎不太优雅,因为相同的编辑软件的字体(例如ppt编辑器)可能看起来与R中的相同字体不一样。
还有另一种方法可以实现这一目标吗?预先感谢!
答案 0 :(得分:1)
这对我有用。
library(ggplot2)
base <- ggplot(economics, aes(date, psavert)) +
geom_blank() +
labs(x="KG", y="%")
base + theme(axis.title.y = element_text(hjust = 1, size = 14), axis.title.x = element_text( hjust = 1, size = 14))
axis.title.y = element_text( hjust = .5)
和axis.title.x = element_text( hjust = .5)
的默认值,并将hjust
更改为0
,将使轴文本到达坐标点(0,0)。
要复制背景和箭头,可以执行以下操作:
# see ?ggplot2::arrow
arrow <- arrow(length = unit(0.5, "cm"), ends = "last", type = "closed")
# -------------------------------------------------------------------------
# A reproducible dataset from ggplot2 (you can use your own data set)
base <- ggplot(economics, aes(date, psavert)) +
geom_blank() +
labs(x="Kg", y="%") +
theme_bw()
# -------------------------------------------------------------------------
# Add a theme layer removing boarder, grid lines and add the axes arrow
base_bg <- base + theme(
panel.border = element_blank(), panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(arrow = arrow)
)
# -------------------------------------------------------------------------
# finally position the axis title up to the arrow
base_bg + theme(axis.title.y = element_text(hjust = 1, size = 14, face="bold", family = "TT Times New Roman"), axis.title.x = element_text( hjust = 1, size = 14, face = "bold", family="Serif"))
%
#see the addition of angle = 360 on axis.title.y
base_bg + theme(axis.title.y = element_text(hjust = 1, size = 14, face="bold", family = "TT Times New Roman", angle = 360), axis.title.x = element_text( hjust = 1, size = 14, face = "bold", family="Serif"))
答案 1 :(得分:0)
尝试:
mop + theme(axis.text.x = element_text(margin=margin(1,2,3,4,"pt"),angle=0)
其中1,2,3,4表示底部,左侧,顶部,右侧边距的测量值
答案 2 :(得分:0)
您可以使用hjust
沿轴线移动轴标签,最大值为1。
p + theme(axis.title.x = element_text(hjust = 1), axis.title.y = element_text(hjust = 1, angle = 0))