我想从下面的数据文件中创建一个简单的马赛克图:
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)
,但即使是桌子也没有很好的排序。
答案 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)
答案 1 :(得分:1)
我可以从spine
库中建议vcd
函数:
# require(vcd)
dt <- xtabs(Count~Name+Country, data=data)
spine(dt)
?spine
“脊柱图是马赛克图的特殊情况,可以看作是叠加(或突出显示)条形图的概括。类似地,旋转图是直方图的扩展。”
spineplot
功能。