首页 > 解决方案 > 如何在y轴上将小数更改为数字

问题描述

如何在y轴上自动将十进制转换为数字?

不是手动的,因为如果我们手动操作,有些情节在那个时候有大量的数据,需要更多的时间

ggplot(data = dd_pard_Last_3M, aes(x = m_year, y = PARD)) +
      geom_bar(stat="identity",aes(fill=status))+theme_classic()+
      #geom_line(data = plan_DD_pard(), aes(x=m_year, y= PARD, group=1,color="Plan"),size=1.2)+
      scale_colour_manual(name="",values=Plan)+
      #geom_point(data = plan_DD_pard(), aes(x=m_year, y=PARD),color="#288D55")+
      theme(axis.line.y = element_blank(),axis.ticks = element_blank(),legend.position = "bottom", axis.text.x = element_text(face = "bold", color = "black", size = 10, angle = 45, hjust = 1))+
      labs(x="", y="Agreements Values (In Lakhs)", fill="")+
      scale_fill_manual(values=c("#284a8d", "#00B5CE","#0590eb","#2746c2"))+
      scale_y_continuous(labels = function(x) format(x, scientific = FALSE))

样本输出

标签: rggplot2

解决方案


编辑:使用来自https://joshuacook.netlify.app/post/integer-values-ggplot-axis/的解决方案

我认为您要求强制 y 轴标签仅显示整数。我粘贴了一个“帮助”公式,并添加breaks = integer_breaks()到您的scale_y_continuous()代码中。

# A function factory for getting integer y-axis values.
integer_breaks <- function(n = 5, ...) {
  fxn <- function(x) {
    breaks <- floor(pretty(x, n, ...))
    names(breaks) <- attr(breaks, "labels")
    breaks
  }
  return(fxn)
}

ggplot(data = dd_pard_Last_3M, aes(x = m_year, y = PARD)) +
      geom_bar(stat="identity",aes(fill=status))+theme_classic()+
      #geom_line(data = plan_DD_pard(), aes(x=m_year, y= PARD, group=1,color="Plan"),size=1.2)+
      scale_colour_manual(name="",values=Plan)+
      #geom_point(data = plan_DD_pard(), aes(x=m_year, y=PARD),color="#288D55")+
      theme(axis.line.y = element_blank(),axis.ticks = element_blank(),legend.position = "bottom", axis.text.x = element_text(face = "bold", color = "black", size = 10, angle = 45, hjust = 1))+
      labs(x="", y="Agreements Values (In Lakhs)", fill="")+
      scale_fill_manual(values=c("#284a8d", "#00B5CE","#0590eb","#2746c2"))+
      scale_y_continuous(labels = function(x) format(x, scientific = FALSE), breaks = integer_breaks())

推荐阅读