gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:57:59 25 4
gpt4 key购买 nike

我正在绘制一个带有次要 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com