首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据元素ggplot r的值在直方图中赋予条形图特定的颜色

如何根据元素ggplot r的值在直方图中赋予条形图特定的颜色
EN

Stack Overflow用户
提问于 2019-03-18 03:14:00
回答 2查看 57关注 0票数 0

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

代码语言:javascript
复制
Car      Country      Value
Audi A6  US           23
Audi A6  UK           12
Audi A6  DE           19
BMW X5   UK           8
BMW X5   DE           5
etc

现在,我想做一个值列的直方图,我还想要条的颜色,例如,在这个条中是否有大量的奥迪A6车型。

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

代码语言:javascript
复制
qplot(beta_0jk[data$Value], 
  geom="histogram", fill=I("lightblue"))

但是,有人知道如何让颜色取决于此数据帧中的汽车或国家/地区列吗?或者有人知道一种不同于直方图的可视化方法?

EN

回答 2

Stack Overflow用户

发布于 2019-03-18 03:59:21

这就是你要找的东西吗?为了使所有条形都具有相同的宽度,我必须用额外的一行填充data,因为没有Country == 'US' when Car == 'BMW X5'。数据准备管道%>%的灵感完全来自于this answer

代码语言:javascript
复制
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())

数据。

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2019-03-18 04:05:18

首先,我会郑重推荐查找R的小抄,它们非常方便地放置在here

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

Problem

首先,你需要理解直方图背后的思想,当你没有值,想要计算某些特征的数量或密度时,直方图就会起作用。在您的例子中,您只需要简单的点来表示数据框中已有的值。通过对ggplot的一些理解,这很容易做到。

美学

当你使用ggplot()函数时,它需要一些基本的参数。

代码语言:javascript
复制
ggplot(data = NULL, mapping = aes(), ..., environment = parent.frame())  

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

x -根据您的值进行分组,我会说您希望在这里使用"Car“来指定型号

值y-这应该很清楚-“”是您测量的变量,所以您选择它表示y轴值

col -它也是组,但它的工作方式与x不同-它为你指定的每个组制作不同的颜色。要使用它,您必须确保您的列是因子

Implementation

代码语言:javascript
复制
ggplot2::ggplot(beta_0jk,ggplot2::aes(
  x = Car,
  y = Value,
  col = Country)
) + geom_jitter()

从这里开始,使用ggplot2小抄来得到你想要的结果,因为老实说,我不知道你到底想展示什么。我还推荐查找dplyr和tidyr库。

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

https://stackoverflow.com/questions/55210907

复制
相关文章

相似问题

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