gpt4 book ai didi

r - 使用 ggplot2 在 R 中绘制条形图

转载 作者:行者123 更新时间:2023-12-03 15:53:16 25 4
gpt4 key购买 nike

我有一个名为 toplot_noind 的数据框如下所示。

> toplot_noind

Chang.1 Chang.2 Chang.3 Chang.4 Chang.5 Chang.6 Chang.7 Chang.8
18 150.3 84.61 31.45 11.08 -0.19 -57.83 -88.63 -98.39

我想使用此数据框使用 ggplot2 绘制条形图。

我不需要图表中的列名:Chang.1、Chang.2 等。

我希望这 8 个值 150.3, 84.61, ..., -98.39 出现在 y 轴上(18 不是值的一部分,它是行的名称)。

此外,由于有 8 个值,我希望在 x 轴上有 8 个条形 - 每个条形都指向这些值中的每一个。

因此,我想在 x 轴上按顺序将这些条命名为 1(对于第一个条)、2(对于第二个条)、3、...、8。

另外,我想将 y 轴标记为“总预期利润”,将 x 轴标记为“溢价变化”。

下面显示的是我试图做的,但它不起作用。实际上,我曾尝试在 ggplot2 上阅读,但我阅读的 Material 无法让我充分理解,但我需要在作业中使用此条形图。我提交的时间非常有限。
library(reshape)
library(ggplot2)

t<-ncol(toplot_noind)

a<-seq(1:t)

ggplot(toplot_noind, aes(x = a, y = toplot_noind, xlab="premium change", ylab="Total Expected Profit")) +
geom_bar(position = "dodge")

非常感谢所有可以帮助我的人。

以撒

最佳答案

你的意思是这样的吗? (我不确定您是否要在图表顶部添加值,所以我添加了它们,但是如果您不需要它们,您可以安全地删除最后一行。)

tmp <- c(150.3,84.61,31.45,11.08,-0.19,-57.83,-88.63,-98.39)
dd <- data.frame(y=tmp, x=LETTERS[1:8])
ggplot(dd, aes(x=x, y=y)) + geom_bar(fill="darkgrey") +
labs(x="Premium change", y="Total Expected Profit") +
geom_text(aes(x=x, y=ifelse(y>0, y+5, y-5),
label=y), size=4, colour="white")

enter image description here

添加 + coord_flip() 会更好,海事组织。

你的代码有什么问题?
  • ggplot()函数需要一个 data.frame,它可以从中提取命名变量,例如用于美学参数x=y= .因此,首先,您需要将对象转换为合适的 data.frame 并为其命名,因为您可以通过 aes() 获取其值。 :
    toplot_noind <- as.data.frame(toplot_noind)
    names(toplot_noind) <- y

    这比使用与 data.frame 相同的名称更好。 (但请注意,它将通过强制转换操作继承其名称。)
  • 然后,x 和 y 标签必须在 aes() 之外功能。我不使用 qplot()但我认为使用 xlab=ylab=在那里工作正常。与 ggplot ,我更喜欢labs()xlab()/ylab()职能。例如。
  • 您需要拥有 x表示为一个因素。
  • 这里似乎不需要躲避方面,因为您没有第二个交叉分类因子(参见 help(position_dodge) 中的使用示例)。

  • 总之,您更正后的代码如下所示:
    toplot_noind <- as.data.frame(toplot_noind)
    ggplot(toplot_noind, aes(x = as.factor(1:8), y = toplot_noind)) +
    geom_bar() +
    xlab("premium change") +
    ylab("Total Expected Profit")

    关于r - 使用 ggplot2 在 R 中绘制条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6175275/

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