1

我有下表:

 Server Package       Version        Status
1  Serv1   Pack1          Ver1    Up To Date
2  Serv1   Pack2          Ver1      Outdated
3  Serv2   Pack1 Not Installed Not Installed
4  Serv2   Pack2          Ver2    Up To Date
5  Serv3   Pack1          Ver1    Up To Date
6  Serv3   Pack2 Not Installed Not Installed

我想创建一个马赛克图来显示服务器与包,生成的图块用颜色表示它们的状态。

我在用:

mosaicplot(mini_conda$Server~mini_conda$Package, 
xlab = "Server", 
ylab = "Package", 
main = "")

生成的情节几乎是正确的,但我不知道如何正确着色瓷砖。

谢谢,

更新: dput() 中的数据

> (dput(mini_conda))
structure(list(Server = structure(c(1L, 1L, 2L, 2L, 3L, 3L), .Label = c("Serv1", 
"Serv2", "Serv3"), class = "factor"), Package = structure(c(1L, 
2L, 1L, 2L, 1L, 2L), .Label = c("Pack1", "Pack2"), class = "factor"), 
    Version = structure(c(2L, 2L, 1L, 3L, 2L, 1L), .Label = c("Not Installed", 
    "Ver1", "Ver2"), class = "factor"), Status = structure(c(3L, 
    2L, 1L, 3L, 3L, 1L), .Label = c("Not Installed", "Outdated", 
    "Up To Date"), class = "factor")), .Names = c("Server", "Package", 
"Version", "Status"), class = "data.frame", row.names = c(NA, 
-6L))
  Server Package       Version        Status
1  Serv1   Pack1          Ver1    Up To Date
2  Serv1   Pack2          Ver1      Outdated
3  Serv2   Pack1 Not Installed Not Installed
4  Serv2   Pack2          Ver2    Up To Date
5  Serv3   Pack1          Ver1    Up To Date
6  Serv3   Pack2 Not Installed Not Installed
4

2 回答 2

0

一种方法是使用vcd包:

# install.packages("vcd")
library(vcd)
mosaic(~ Server + Package + Status, data = mini_conda,
       highlighting = "Status", direction = c("v", "h", "h"),
       highlighting_fill = c("lightblue", "pink", "lightgreen"))

马赛克

根据数据,您可能需要使用ggplot2

# install.packages("ggplot2")
library(ggplot2)
ggplot(mini_conda, aes(x = Server, y = Package, fill = Status)) +
  geom_tile()

ggplot

于 2015-11-19T16:38:37.160 回答
0

A ggplot approach:

p1 <- ggplot(mini_conda, aes(x = "", y = Package)) +
  geom_tile(aes(fill=Status)) +
  facet_grid(.~Server) +
  coord_fixed() +
  scale_fill_manual(values = c("Not Installed"="red",
                      "Outdated"="orange",
                      "Up To Date" = "green")) +
  theme_bw() + 
  theme(
    axis.ticks.x=element_blank(),
    strip.background = element_blank()
  ) + labs(
    x="", y=""
  ) 

enter image description here

于 2015-11-19T16:39:35.430 回答