如何在ggplot()中压缩X轴?解决坐标翻转后效果丢失问题
问题解决方法
你遇到的核心问题是:ggplot 中同一图层只能存在一套坐标系统,后添加的坐标系统会直接替换之前的,所以coord_flip()会覆盖掉coord_fixed()的设置,导致压缩效果丢失。
要同时实现轴翻转和固定比例压缩X轴的需求,不需要分开调用两个坐标函数,直接在coord_flip()里设置ratio参数即可,完全不用修改原始数据。
修改后的完整代码
数据准备:
library(tidyverse) grid_tbl <- bind_cols(x = seq(from = -10, to = 10, by = 0.05), y = seq(from = -10, to = 10, by = 0.05)) sine_points_vec <- map(grid_tbl$x, sinpi) %>% unlist() sine_plot_tbl <- bind_cols(grid_tbl$x, sine_points_vec) %>% rename(x = `...1`, y = `...2`)
绘图代码:
sine_plot_tbl %>% select(y,x) %>% rename(y = x, x = y) %>% ggplot(aes(x = y, y = x)) + geom_line(color = "red") + geom_hline(yintercept = 0, color = "blue") + coord_flip(ratio = 0.8) + # 直接在这里设置比例,同时完成翻转和压缩 labs( title = "Inverse Sine Relation Plot", caption = "Vertical line passes through curve at many points" )
补充说明
coord_flip(ratio = 0.8)中ratio的含义是翻转后的Y轴(对应原数据的X轴)长度与翻转后的X轴(对应原数据的Y轴)长度的比值,设置为0.8就能让原X轴方向的刻度被压缩,最终呈现出曲线峰值更平缓的视觉效果,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Charles Knell
相关产品推荐
相关产品推荐

