r - 如何将日志标记放在辅助轴上?

标签 r ggplot2

我正在绘制一个带有次要 y 轴的图,它只是主轴的乘法缩放,以便以替代单位显示它。

我的主要 y 轴是对数缩放的,带有来自 annotation_logticks 的对数刻度线。有什么方法可以在缩放单位的辅助 y 轴上获取对数刻度线?目前他们在主要单位。

library(tidyverse)

x=c(100,1000000,100,1000000)
y=c(0.01,0.01,0.32,0.32)
z=c(1,1,0.5,0.5)
data <- data.frame(x,y,z)

data %>%
  ggplot(aes(x = x, y = y, z = z, fill = z)) +
  geom_raster(interpolate=TRUE) + 
  coord_fixed(ratio = 1, xlim = c(100,1000000), ylim=c(0.01,0.32)) +
  annotation_logticks(sides = "trbl") + 
  scale_x_log10() +
  scale_y_log10(sec.axis = sec_axis(~ . / 0.0714,
                                    breaks=c(0.2,0.5,1,2,5),
                                    name = "Sec. Axis")) + 
  scale_fill_continuous() +
  theme_bw()

reprex package 创建于 2020-08-24 (v0.3.0)

额外的图片:

目前,右轴看起来像: wrong right axis log tickmarks

我希望轴看起来像: correct right axis log tickmarks

最佳答案

似乎没有办法直接使用 annotation_logticks 执行此操作,因为您可以更改的唯一位置参数是 base。但是,改 rebase 数不会影响主断点的位置,主断点的位置由主轴值决定。

但是,您可以通过在辅助轴上手动设置中断和标签来实现类似的效果:

data %>%
  ggplot(aes(x = x, y = y, z = z, fill = z)) +
  geom_raster(interpolate=TRUE) + 
  coord_fixed(ratio = 1, xlim = c(100,1000000), ylim=c(0.01,0.32)) +
  annotation_logticks(sides = "tbl") + 
  scale_x_log10() +
  scale_y_log10(sec.axis = sec_axis(~ . * 14,
                                    breaks= c(seq(0.1, 1, 0.1), 2:5),
                                    labels =  replace(character(14), 
                                                      c(2, 5, 10, 11, 14), 
                                                      c(0.2, 0.5, 1, 2, 5)),
                                    name = "Sec. Axis")) + 
  scale_fill_continuous() +
  theme_bw() 

enter image description here

关于r - 如何将日志标记放在辅助轴上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63558115/

相关文章:

r - 整洁的评估编程和 ggplot2

r - "+"在ggplot2中如何工作?

r - 如何使用子集函数和变量删除数据框列?

r - 如何在R中没有for循环的情况下将一列与一系列相关的虚拟变量进行比较

R 在函数内部定义函数属性

r - R markdown中的德国Umlaut字符

r - 基于具有不同列名的 2 列合并 2 个数据框

r - 更改 R 中 ggplot geom_polygon 的颜色方案

r - ggplot2的散点图按日期着色

R:在一页上打印多种类型的图