如何根据预先计算的计数数据绘制马赛克图?

时间:2013-12-13 08:27:05

标签: r import plot

我想从下面的数据文件中创建一个简单的马赛克图:

Country|Name|Count
US|Sam|10
US|John|30
UK|Sam|30
UK|John|2
CA|Sam|23
CA|Bill|45

我期望得到一个马赛克图,其中x轴为第1列,每个类别“名称”为高度“Count”的堆叠矩形。

我试过了:

data<-read.table("my_table.txt", header=T, sep="|")
mosaicplot(data)

但它创造了一个有着太多列和行的怪物。

我的问题是如何提及“Count”变量的值应该是y值? 我在制作马赛克之前尝试使用ftable(graph),但即使是桌子也没有很好的排序。

2 个答案:

答案 0 :(得分:2)

一种可能性是爆炸&#39;使用rep预先计算的数据。

country <- with(df, rep(x = Country, times = Count))
name <- with(df, rep(x = Name, times = Count))

df2 <- data.frame(country, name)
mosaicplot(country ~ name, data = df2)

enter image description here

答案 1 :(得分:1)

我可以从spine库中建议vcd函数:

# require(vcd)
dt <- xtabs(Count~Name+Country, data=data)
spine(dt)

?spine“脊柱图是马赛克图的特殊情况,可以看作是叠加(或突出显示)条形图的概括。类似地,旋转图是直方图的扩展。”

基本图形中也提供了

spineplot功能。

enter image description here