【问题标题】:R graph more questions about parametrizationR图更多关于参数化的问题
【发布时间】:2018-04-16 14:39:42
【问题描述】:

我在 R 中构建了这个图表:

library(ggplot2)

dataset <- data.frame(Riserva_Riv_Fine_Periodo = 1:10 * 10^6 + 1,
                      Anno = 1:10)

ggplot(data = dataset, 
            aes(x = Anno, 
                y = Riserva_Riv_Fine_Periodo)) + 
  geom_bar(stat = "identity", 
           width=0.8, 
           position="dodge") + 
  geom_text(aes( y = Riserva_Riv_Fine_Periodo,
            label = round(Riserva_Riv_Fine_Periodo, 0), 
                 angle=90, 
                 hjust=+1.2), 
            col="white", 
            size=4, position = position_dodge(0.9))

如您所见,我有 2 个问题:

  1. 条中的数字被截断。
  2. y 刻度写成这种格式“0e+00”

我想:

  1. 根据栏的高度设置栏内或栏外的数字
  2. 以百万为单位设置 y 比例。

【问题讨论】:

  • 请确保在您的问题中包含一个数据集,以便其他人能够重建您的数据集。在此处查看更多详细信息:stackoverflow.com/q/5963269/7347699
  • 请尝试将有关 stackoverflow 的问题保留为单个问题。设置标签和更改比例是两个独立的问题。关于尺度的变化,这个应该有帮助:stackoverflow.com/questions/4646020/…

标签: r ggplot2


【解决方案1】:
  1. 您可以使用ifelse 语句根据 y 的值有条件地更改 hjust 参数
  2. 您可以使用scipen 选项更改R 表示小数的方式。

这是一个例子:

library(ggplot2)

options(scipen=2)

dataset <- data.frame(Riserva_Riv_Fine_Periodo = 1:10 * 10^6 + 1,
                      Anno = 1:10)

ggplot(data = dataset, 
            aes(x = Anno, 
                y = Riserva_Riv_Fine_Periodo)) + 
  geom_bar(stat = "identity", 
           width=0.8, 
           position="dodge") + 
  geom_text(aes( y = Riserva_Riv_Fine_Periodo,
                 label = round(Riserva_Riv_Fine_Periodo, 0), 
                 angle=90, 
                 hjust= ifelse(Riserva_Riv_Fine_Periodo < 3000000, -0.1,  1.2)), 
            col="red", 
            size=4, 
            position = position_dodge(0.9))

【讨论】:

  • 谢谢你,米奇。 scipen 选项很好! l'ifelse 的解决方案也很好,但我需要使条件范围“动态”。有任何想法吗?谢谢
  • 没问题@LaraBraghetti。如果您满意,请将答案标记为已接受并投票 :)
猜你喜欢
  • 2020-07-18
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 1970-01-01
  • 2011-08-28
  • 2022-11-01
相关资源
最近更新 更多