R 如何反转绘图上的y轴
我想知道如何在R中绘制一个图,其中y轴倒置,这样绘制的数据显示在笛卡尔平面的第四象限()中,而不是第一(I)象限 作为参考,我试图绘制的图与以下()非常相似:R 如何反转绘图上的y轴,r,plot,R,Plot,我想知道如何在R中绘制一个图,其中y轴倒置,这样绘制的数据显示在笛卡尔平面的第四象限()中,而不是第一(I)象限 作为参考,我试图绘制的图与以下()非常相似: 我在网上发现了许多关于在y轴上反转编号的问题,但这些问题仍然在第一个象限中绘制数据。有人能建议我如何制作一个类似于上面所示的情节吗?下面是@timriffe和@joran的评论,只是为了提供一个已解决的答案 使用该功能可从以下位置获取次要日志标记: 添加花式原木轴并将刻度标签向右上旋转(谢谢@joran!): 将x轴添加到顶部: axi
我在网上发现了许多关于在y轴上反转编号的问题,但这些问题仍然在第一个象限中绘制数据。有人能建议我如何制作一个类似于上面所示的情节吗?下面是@timriffe和@joran的评论,只是为了提供一个已解决的答案 使用该功能可从以下位置获取次要日志标记: 添加花式原木轴并将刻度标签向右上旋转(谢谢@joran!): 将x轴添加到顶部:
axis(3)
添加x轴标签(感谢提示@WojciechSobala)
并在该行的末尾添加注释
text(max(x), min(log10(y)), "Example", pos = 1)
结果如下:
回答标题中的问题,反转轴的最佳/最简单方法是翻转
限制
变量:
> plot(1:10, xlim=c(1,10));
这样做意味着您不需要处理与图像坐标不同的轴
这可以与'xaxt=“n”'参数和附加的轴
命令结合使用,以将轴放置在另一侧:
> plot(1:10, ylim=c(10,1), xaxt="n"); axis(3);
现在,在
ggplot2
示例
library(ggplot2)
library(scales)
set.seed(99)
Date <- seq(from = as.Date("2017-12-01"), to = as.Date("2017-12-15"),
by = "days")
Flux <- runif(length(Date), 1, 10000)
Flux_df <- data.frame(Date, Flux)
p1 <- ggplot(Flux_df, aes(Date, Flux)) +
geom_col() +
xlab("") +
scale_x_date(position = "top", breaks = pretty_breaks(), expand = c(0, 0)) +
scale_y_reverse(expand = expand_scale(mult = c(0.2, 0))) +
theme_bw(base_size = 16) +
theme(panel.border = element_blank(),
panel.grid.major.x = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line()) +
theme(legend.position = "none")
p1
在绘图调用中,指定
axes=FALSE
,然后使用axis()
几次,指定side
参数以获得所需的轴。我将重复tim的评论:看起来你并不是真的在“反转”任何东西。您只是在顶部而不是底部绘制x轴。+1做得很好。你不必上传另一张图片来证明这一点,但既然OP肯定会问,传递las=1
到minor.ticks.axis
是否将y轴标签旋转为水平?使用多行文字,你可以添加x轴标签以获得所需的结果。@WojciechSobala,谢谢你的提示,我已经添加了这一点,在这行的末尾有一个注释,与OP的示例更为相似
mtext("x", side = 3, line = 2)
text(max(x), min(log10(y)), "Example", pos = 1)
> plot(1:10, xlim=c(1,10));
> plot(1:10, xlim=c(10,1));
> plot(1:10, ylim=c(10,1));
> plot(1:10, ylim=c(10,1), xaxt="n"); axis(3);
library(ggplot2)
library(scales)
set.seed(99)
Date <- seq(from = as.Date("2017-12-01"), to = as.Date("2017-12-15"),
by = "days")
Flux <- runif(length(Date), 1, 10000)
Flux_df <- data.frame(Date, Flux)
p1 <- ggplot(Flux_df, aes(Date, Flux)) +
geom_col() +
xlab("") +
scale_x_date(position = "top", breaks = pretty_breaks(), expand = c(0, 0)) +
scale_y_reverse(expand = expand_scale(mult = c(0.2, 0))) +
theme_bw(base_size = 16) +
theme(panel.border = element_blank(),
panel.grid.major.x = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line()) +
theme(legend.position = "none")
p1
reverselog_trans <- function(base = exp(1)) {
trans <- function(x) -log(x, base)
inv <- function(x) base^(-x)
scales::trans_new(paste0("reverselog-", format(base)), trans, inv,
scales::log_breaks(base = base), domain = c(1e-100, Inf))
}
p1 + scale_y_continuous(trans = reverselog_trans(10),
breaks = scales::trans_breaks("log10", function(x) 10^x),
labels = scales::trans_format("log10", scales::math_format(10^.x)),
expand = expand_scale(mult = c(0.2, 0))) +
annotation_logticks()