我有一个数据框,其中包含国家/地区的汽车型号和关联值,如下所示
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制作直方图:
qplot(beta_0jk[data$Value],
geom="histogram", fill=I("lightblue"))但是,有人知道如何让颜色取决于此数据帧中的汽车或国家/地区列吗?或者有人知道一种不同于直方图的可视化方法?
发布于 2019-03-18 03:59:21
这就是你要找的东西吗?为了使所有条形都具有相同的宽度,我必须用额外的一行填充data,因为没有Country == 'US' when Car == 'BMW X5'。数据准备管道%>%的灵感完全来自于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)发布于 2019-03-18 04:05:18
首先,我会郑重推荐查找R的小抄,它们非常方便地放置在here中
我个人更习惯于编写完整版的ggplot函数,因为当你越来越熟悉这个库时,它就会变得更加清晰。
Problem
首先,你需要理解直方图背后的思想,当你没有值,想要计算某些特征的数量或密度时,直方图就会起作用。在您的例子中,您只需要简单的点来表示数据框中已有的值。通过对ggplot的一些理解,这很容易做到。
美学
当你使用ggplot()函数时,它需要一些基本的参数。
ggplot(data = NULL, mapping = aes(), ..., environment = parent.frame()) 您提供的数据只是整个beta_0jk数据帧。映射对应于您通过列定义的元素,因此您需要指定它们:
x -根据您的值进行分组,我会说您希望在这里使用"Car“来指定型号
值y-这应该很清楚-“”是您测量的变量,所以您选择它表示y轴值
col -它也是组,但它的工作方式与x不同-它为你指定的每个组制作不同的颜色。要使用它,您必须确保您的列是因子
Implementation
ggplot2::ggplot(beta_0jk,ggplot2::aes(
x = Car,
y = Value,
col = Country)
) + geom_jitter()从这里开始,使用ggplot2小抄来得到你想要的结果,因为老实说,我不知道你到底想展示什么。我还推荐查找dplyr和tidyr库。
https://stackoverflow.com/questions/55210907
复制相似问题