R颜色标度为ggplot的x和y轴?

时间:2016-08-14 17:37:39

标签: r plot ggplot2 heatmap

我试图在R中生成一个图,它基本上显示了区域之间的传输量热图,我希望能让这个图更具信息性。是否可以将色标作为图的x和y轴?基本上,我想要的是热图的主要部分显示运输量作为站的函数,然后在x和y轴上显示站的颜色标度作为状态的函数。

例如,采用以下数据框:

   station1     station2     passengers
    Phila        NYC            100
    Balti        Phila          50
    Newark       Phila          40
    Trenton      Phila          30
    Balti        Newark         70
    Balti        Trenton        50
    Balti        NYC            30
    NYC          Newark         50
    NYC          Trenton        60

我可能会在热图中用以下内容绘制:

require(ggplot2)
ggplot(data = df, aes(x=station1, y=station2, fill=passengers)) +
  geom_tile(color="white") +
  xlab("Station") +
  ylab("Station")

现在,在这种情况下,我想要的是添加一个x和y颜色条,显示每个工作站所在的州/区。例如,在这里,我可以选择4种颜色,对于纽约州,马里兰州,宾夕法尼亚州和新泽西州,纽瓦克和特伦顿都将采用相同的颜色,以便轻松识别乘客之间的过境状态。国家识别量表如下:

station    state
Newark     NJ
Trenton    NJ
Phila      PA
Balti      MD
NYC        NY

让我知道这个问题是否清楚,如果有可能/不可能/为什么主要使用ggplot框架,如果不是,那么其次是R中的任何方式,并且(最不喜欢)如果我需要切换语言做这个。提前谢谢!

编辑:

样本数据的数据框和生成热图的代码:

df <- data.frame(station1=c("PHL", "BAL", "NEW", "TRE", "BAL", "BAL", "BAL", "NYC", "NYC", "NYC"), station2=c("NYC", "PHL", "PHL", "PHL", "NEW", "TRE", "NYC", "NEW", "TRE", "BAL"), population=c(100, 50, 40, 30, 70, 50, 30, 50, 60, 30))
require(ggplot2)
ggplot(data = df, aes(x=station1, y=station2, fill=population)) +
    geom_tile(color="white") +
    xlab("Station") +
    ylab("Station")

所需的图像如下所示,我们将站点映射到相应的状态(PA为绿色,新泽西为红色,NY为蓝色,MD为粉红色):

state_key <- data.frame(station=c("BAL", "PHL", "TRE", "NEW", "NYC"), state=c("MD", "PA", "NJ", "NJ", "NY"))

我并不真正关心状态着色(我确信这很容易弄明白),而只是为x和y轴获得某种颜色标度,以补充标签本身(即在这种情况下,用直接位于其上方的状态颜色键补充工作站标签,这样您只需查看图表就可以轻松获取此信息。

enter image description here

0 个答案:

没有答案