格点dotplot条件填充颜色

时间:2014-03-20 20:21:29

标签: r plot lattice

问题:

我有一个数据框,我想用格子的面板点图(而不是ggplot2)来显示它。它包含一个变量,应该有条件地使用它来通过不同的颜色填充来突出显示数据。

可重复的例子:

require(lattice)

# Make reproducable data frame
df= mtcars
df= cbind(car = rownames(df), df) 
rownames(df)= NULL
df=df[1:5, c("car", "mpg", "cyl", "carb")]

df
# output:
#                car  mpg cyl carb
#         Mazda RX4 21.0   6    4
#     Mazda RX4 Wag 21.0   6    4
#        Datsun 710 22.8   4    1
#    Hornet 4 Drive 21.4   6    1
# Hornet Sportabout 18.7   8    2

# I am interested to highlight those data which have carb=1
df[df$carb==1,]

#            car  mpg cyl carb
#     Datsun 710 22.8   4    1
# Hornet 4 Drive 21.4   6    1

dotplot(car ~ mpg | as.factor(cyl), data=df, layout=c(3,1))

这会创建一个情节:

Dotplot without highlighting.

问题:

我想实现以下情节:

Dotplot with targeted highlighting.

如何重构代码以实现此目的?

1 个答案:

答案 0 :(得分:6)

你可以试试这个:

dotplot(car ~ mpg | as.factor(cyl), data=df, layout=c(3,1),
        pch = 19, groups = carb < 2, col = c("blue", "red"))

groups参数carb < 2会生成逻辑向量。按字母顺序FALSE出现在TRUE之前。因此,carb < 2为FALSE的情况获得第一种颜色(蓝色),以及碳水化合物<1的情况。 2得到第二种颜色,红色。

enter image description here

?dotplot关于group参数:
A variable or expression to be evaluated in data, expected to act as a grouping variable within each panel, typically used to distinguish different groups by varying graphical parameters like color and line type.