我有一个数据框,其中包含来自20多个国家/地区的20多种产品的订单数据.我把它放在一个高亮表中使用ggplot2代码类似于:
require(ggplot2)
require(reshape)
require(scales)
mydf <- data.frame(industry = c('all industries','steel','cars'),
'all regions' = c(250,150,100), americas = c(150,90,60),
europe = c(150,60,40), check.names = FALSE)
mydf
mymelt <- melt(mydf, id.var = c('industry'))
mymelt
ggplot(mymelt, aes(x = industry, y = variable, fill = value)) +
geom_tile() + geom_text(aes(fill = mymelt$value, label = mymelt$value))
Run Code Online (Sandbox Code Playgroud)
这产生了这样的情节:

在真实的情节中,450细胞表非常好地显示了订单集中的"热点".我想要实现的最后一个改进是按字母顺序在x轴和y轴上排列项目.因此,在上面的曲线图中,y轴(variable)将被排序为all regions,americas,然后europe与x轴(industry)将被排序all industries,cars和steel.事实上,x轴已按字母顺序排序,但如果不是这样,我不知道如何实现.
关于不得不提出这个问题,我感到有些尴尬,因为我知道在SO上有许多类似的东西,但R中的排序和排序仍然是我的个人bugbear,我无法让这个工作.虽然我确实尝试过,除了最简单的情况之外,我在一连串的电话中丢失了factor,levels.sort,order …
我有两个时间轴的数据和每个单元格的测量值。由此我创建了一个热图。我还知道每个单元格的测量值是否重要。
我的问题是在所有重要的单元格周围画一条等高线。如果单元格形成具有相同显着性值的集群,我需要围绕集群而不是围绕每个单独的单元格绘制轮廓。
数据格式如下:
x_time y_time metric signif
1 1 1 0.3422285 FALSE
2 2 1 0.6114085 FALSE
3 3 1 0.5381621 FALSE
4 4 1 0.5175120 FALSE
5 1 2 0.6997991 FALSE
6 2 2 0.3054885 FALSE
7 3 2 0.8353888 TRUE
8 4 2 0.3991566 TRUE
9 1 3 0.7522728 TRUE
10 2 3 0.5311418 TRUE
11 3 3 0.4972816 TRUE
12 4 3 0.4330033 TRUE
13 1 4 0.5157972 TRUE
14 2 4 0.6324151 TRUE
15 3 4 …Run Code Online (Sandbox Code Playgroud)