首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在geom_col中反转对数刻度上的条形?

如何在geom_col中反转对数刻度上的条形?
EN

Stack Overflow用户
提问于 2021-05-11 06:59:36
回答 1查看 51关注 0票数 0
代码语言:javascript
运行
复制
library(tidyverse)

data <- structure(list(periodo = c("2T", "2T", "3T", "3T", "1T", "1T", 
"3T", "3T", "4T", "4T", "1T", "1T", "2T", "2T", "3T", "3T", "4T", 
"4T", "1T", "1T", "2T", "2T", "3T", "3T", "4T", "4T", "1T", "1T", 
"2T", "2T", "3T", "3T", "4T", "4T", "1T", "1T", "1S", "2S", "1S", 
"2S", "1S", "2S", "2S", "2S", "1S", "1S"), valor = c(0.005248075, 
0.005128614, 0.0027195, 0.0151865, 0.002138615, 0.0154045, 0.00258683684210526, 
0.010892, 0.02037825, 0.0232392666666667, 0.026491725, 0.0232410291666667, 
0.026384125, 0.0232420416666667, 0.00438416666666667, 0.00122625, 
0.0125198083333333, 0.00935866250000001, 0.00981484583333334, 
0.0072391375, 0.0214400530654592, 0.0214486897415176, 0.0597089068767695, 
0.0116124859053284, 0.00311100760334978, 0.00369158618252611, 
0.02056125, 0.00690491666666667, 0.00277258333333333, 0.00211695833333333, 
0.00235166666666667, 0.00235791666666667, 0.0176666666666667, 
0.025125, 0.0236666666666667, 0.0212916666666667, 0.000170841666666667, 
0.000172070833333333, 0.0005342625, 0.00141873333333333, 0.00107964166666667, 
0.00191949166666667, 0.000509783333333334, 0.0013974, 0.002087, 
0.000502616666666667), nombre = structure(c(4L, 2L, 4L, 2L, 4L, 
2L, 4L, 2L, 4L, 2L, 4L, 2L, 4L, 2L, 4L, 2L, 4L, 2L, 4L, 2L, 4L, 
2L, 4L, 2L, 4L, 2L, 4L, 2L, 4L, 2L, 4L, 2L, 4L, 2L, 4L, 2L, 3L, 
3L, 3L, 3L, 4L, 1L, 2L, 4L, 1L, 2L), .Label = c("P-2", "R-5", 
"E-3", "R-4"), class = c("ordered", "factor"))), row.names = c(NA, 
-46L), class = c("tbl_df", "tbl", "data.frame")

图表

代码语言:javascript
运行
复制
data %>%
ggplot(aes(periodo, valor, fill = nombre)) +
  geom_col(position = position_dodge2(width = 0.3, preserve = "single")) +
  scale_y_continuous(
    label_y,
    trans = "log10",
    limits = 10^c(-5, 0),
    breaks = 10^c(-5:0)
  )

默认情况下,栏是上下颠倒的,这很让人困惑,因为我是从下往上读valor列的。

预期输出:我需要的酒吧倒置像“正常”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-11 13:03:16

这是一个技巧,我们将绘制的值移动到>1,然后将标签移动相同的量:

(顺便说一下,我想补充一下,条形图在对数尺度上将不可避免地具有误导性,因为我们被教导将长度解释为与值成比例。在这里,geom_point可能是一个更简单的选择,避免了任何调整。)

代码语言:javascript
运行
复制
data %>%
  ggplot(aes(periodo, valor*1e5, fill = nombre)) +
  geom_col(position = position_dodge2(width = 0.3, preserve = "single")) +
  scale_y_continuous(name = "valor",
    trans = "log10",
    limits = 10^c(0, 5),
    breaks = 10^c(0:5),
    labels = scales::scientific(10^c(-5:0))
  )

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67478593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档