【问题标题】:How to give bars in histogram specific colour depending on value of elements ggplot r如何根据元素ggplot r的值给出直方图中特定颜色的条形图
【发布时间】:2019-08-08 04:53:54
【问题描述】:

我有一个数据框,其中包含国家/地区的汽车模型,其相关值如下所示

Car      Country      Value
Audi A6  US           23
Audi A6  UK           12
Audi A6  DE           19
BMW X5   UK           8
BMW X5   DE           5
etc

现在,我想要制作 Values 列的直方图,并且我还想要指示此栏中是否有大量奥迪 A6 车型的条形颜色。

我知道如何使用 ggplot 制作直方图:

qplot(beta_0jk[data$Value], 
  geom="histogram", fill=I("lightblue"))

但有人知道如何让颜色取决于此数据框中的 Car 或 Country 列吗?或者有人知道与直方图不同的方式来可视化这一点吗?

【问题讨论】:

  • 可能是条形图?
  • 这确实是一个不错的选择,但是您是否知道如何让条形图的 y 轴像直方图一样计数?

标签: r ggplot2 histogram


【解决方案1】:

这就是你要找的吗?为了让所有条的宽度相同,我必须在data 中添加额外的一行,因为Car == 'BMW X5' 时没有Country == 'US'。数据准备管道%>% 完全受到this answer 的启发。

library(tidyverse)
library(ggplot2)


data %>% 
  spread(key = Car, value = Value, fill = NA) %>% 
  gather(key = Car, value = Value, -Country) %>% 
  ggplot(aes(x = Car, y = Value, fill = Country)) +
  geom_col(position = position_dodge())

数据。

data <- read.table(text = "
Car      Country      Value
'Audi A6'  US           23
'Audi A6'  UK           12
'Audi A6'  DE           19
'BMW X5'   UK           8
'BMW X5'   DE           5
", header = TRUE)

【讨论】:

    【解决方案2】:

    首先,我强烈建议您查找 R 的备忘单,它们的位置非常方便 here

    我个人更习惯于编写完整版的 ggplot 函数,因为当你对这个库越来越熟悉时,它会更加清晰。

    问题
    首先您需要了解直方图背后的想法,直方图在您没有价值并想要计算某些特征的数量或密度时起作用。在您的情况下,您只需要简单的点来表示数据框中已有的值。 对ggplot有一些了解就很容易做到。

    美学
    当您使用 ggplot() 函数时,它需要一些基本参数。

    ggplot(data = NULL, mapping = aes(), ..., environment = parent.frame())  
    

    您提供的数据只是整个 beta_0jk 数据框。映射对应于您通过列定义的元素,因此您需要指定它们:

    x - 按你的价值观分组的东西,我想说你会希望“汽车”在这里指定型号
    y - 这应该很清楚 - “值”是您测量的变量,因此您选择它来表示 y 轴值
    col - 它又是 GROUP,但它的工作方式与 x 不同 - 它为您指定的每个组制作不同的颜色。要使用它,您必须确保您的列是因子

    实施

    ggplot2::ggplot(beta_0jk,ggplot2::aes(
      x = Car,
      y = Value,
      col = Country)
    ) + geom_jitter()
    

    从此开始并使用 ggplot2 备忘单来制作您想要的结果,因为老实说,我不知道您想要展示什么。我还建议查找 dplyrtidyr

    【讨论】:

    • 你也可以试试 ggplot2::ggplot(beta_0jk,ggplot2::aes( x = Car, y = Value, fill= Country) ) + geom_col() 如果这是你想要的
    猜你喜欢
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 2018-09-07
    • 2021-08-28
    • 2020-10-05
    相关资源
    最近更新 更多