2014-11-25 64 views
1

我想生成一些数据的热图,以便可以间接看到密度。 但问题是数据必须从xml文件中解析并保存在数据框中。我知道热图需要一个矩阵作为源,我试图将我的数据框转换成这样的矩阵。但是,热图的结果是,让我们说它看起来不太好。你能帮我吗?如何使用数据帧在R中创建热图

pdf("edge_connectivity_pdftest3.pdf", width = 7, height = 7) 


library(XML) 
library(ggplot2) 
library(plyr) 
library(plotrix) 

twentyfive <- '<?xml version="1.0" encoding="UTF-8"?> 
<MappingTest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://sourceforge.net/projects/alevin/ ./Alevin.xsd" xmlns="http://sourceforge.net/projects/alevin/" name="AdvSubgraphTestGenerator2"> 
<TestGenerator className="tests.generatorTests.AdvSubgraphTestRunner"/> 
<ScenarioResult> 
<ScenarioParameter name="Waxman_alpha" value="0.5"/> 
<ScenarioParameter name="Waxman_beta" value="0.5"/> 
<ScenarioParameter name="NumVNodesPerNet" value="6.0"/> 
<ScenarioParameter name="NumVNets" value="1.0"/> 
<ScenarioParameter name="SNetSize" value="25.0"/> 
<ScenarioParameter name="Min_BW_Dem" value="10.0"/> 
<ScenarioParameter name="Max_BW_Dem" value="50.0"/> 
<ScenarioParameter name="Min_BW_Res" value="30.0"/> 
<ScenarioParameter name="Max_BW_Res" value="100.0"/> 
<ScenarioParameter name="Min_CPU_Dem" value="10.0"/> 
<ScenarioParameter name="Max_CPU_Dem" value="50.0"/> 
<ScenarioParameter name="Min_CPU_Res" value="30.0"/> 
<ScenarioParameter name="Max_CPU_Res" value="100.0"/> 
<ScenarioParameter name="NumberOfRun" value="1.0"/> 
<ScenarioMetric name="Runtime" result="276.0"/> 
<ScenarioMetric name="RejectedNetworksNumber" result="0.0"/> 
<ScenarioMetric name="VertexConnectivity2" result="2.0"/> 
<ScenarioMetric name="AlgebraicConnectivity2" result="1.6936353132256952"/> 
<ScenarioMetric name="EdgeConnectivity2" result="2.0"/> 
<ScenarioMetric name="FabianianCoefficient2" result="1.0"/> 
<ScenarioMetric name="SpectralGap2" result="0.7100219009060647"/> 
<ScenarioMetric name="StochasticMetric2" result="1.1567175867487764"/> 
<ScenarioMetric name="SolelyForwardingHops" result="0.0"/> 
<ScenarioMetric name="VertexConnectivity0" result="2.0"/> 
<ScenarioMetric name="AlgebraicConnectivity0" result="0.7102866433077278"/> 
<ScenarioMetric name="EdgeConnectivity0" result="2.0"/> 
<ScenarioMetric name="FabianianCoefficient0" result="1.0"/> 
<ScenarioMetric name="SpectralGap0" result="2.0307953380742054"/> 
<ScenarioMetric name="StochasticMetric0" result="0.8828275034293551"/> 
</ScenarioResult> 
<ScenarioResult> 
<ScenarioParameter name="Waxman_alpha" value="0.5"/> 
<ScenarioParameter name="Waxman_beta" value="0.5"/> 
<ScenarioParameter name="NumVNodesPerNet" value="11.0"/> 
<ScenarioParameter name="NumVNets" value="1.0"/> 
<ScenarioParameter name="SNetSize" value="25.0"/> 
<ScenarioParameter name="Min_BW_Dem" value="10.0"/> 
<ScenarioParameter name="Max_BW_Dem" value="50.0"/> 
<ScenarioParameter name="Min_BW_Res" value="30.0"/> 
<ScenarioParameter name="Max_BW_Res" value="100.0"/> 
<ScenarioParameter name="Min_CPU_Dem" value="10.0"/> 
<ScenarioParameter name="Max_CPU_Dem" value="50.0"/> 
<ScenarioParameter name="Min_CPU_Res" value="30.0"/> 
<ScenarioParameter name="Max_CPU_Res" value="100.0"/> 
<ScenarioParameter name="NumberOfRun" value="20.0"/> 
<ScenarioMetric name="Runtime" result="24.0"/> 
<ScenarioMetric name="RejectedNetworksNumber" result="0.0"/> 
<ScenarioMetric name="VertexConnectivity2" result="2.0"/> 
<ScenarioMetric name="AlgebraicConnectivity2" result="1.7460253697709436"/> 
<ScenarioMetric name="EdgeConnectivity2" result="2.0"/> 
<ScenarioMetric name="FabianianCoefficient2" result="1.0"/> 
<ScenarioMetric name="SpectralGap2" result="1.576112684769838"/> 
<ScenarioMetric name="StochasticMetric2" result="2.350669297391729"/> 
<ScenarioMetric name="SolelyForwardingHops" result="0.0"/> 
<ScenarioMetric name="VertexConnectivity0" result="2.0"/> 
<ScenarioMetric name="AlgebraicConnectivity0" result="2.0118905996166037"/> 
<ScenarioMetric name="EdgeConnectivity0" result="2.0"/> 
<ScenarioMetric name="FabianianCoefficient0" result="1.0"/> 
<ScenarioMetric name="SpectralGap0" result="2.515476723671439"/> 
<ScenarioMetric name="StochasticMetric0" result="2.0488743711637802"/> 
</ScenarioResult> 
</MappingTest>' 


test_twentyfive <- xmlParse(twentyfive) 
vc2 = as.numeric(test_twentyfive['//*[@name = "EdgeConnectivity2"]', fun = function(x) xmlGetAttr(x, "result")]) 
number = as.numeric(test_twentyfive['//*[@name = "NumVNodesPerNet"]', fun = function(x) xmlGetAttr(x, "value")]) 
vc0 = as.numeric(test_twentyfive['//*[@name = "EdgeConnectivity0"]', fun = function(x) xmlGetAttr(x, "result")]) 

df2 <- data.frame(number,vc2) 
df0 <- data.frame(number,vc0) 
qrange50 <- range(0,vc2,vc0) 

matrix <- data.matrix(df2) 
heatmap(matrix, Rowv=NA, Colv=NA, col = heat.colors(256), margins=c(5,10)) 
+0

你检查怎么做GGPLOT2热图?这可能有助于http://learnr.wordpress.com/2010/01/26/ggplot2-quick-heatmap-plotting/。 – Nikos 2014-11-25 14:09:15

+0

你期望*它看起来像什么(说它不好看是模糊的)?你的data.frame只有2x2 ... – jbaums 2014-11-25 14:28:18

+0

另外,你看过[这些帖子](http://stackoverflow.com/search?q=heatmap+%5Br%5D)? – jbaums 2014-11-25 14:29:33

回答

0

这是一个关于美学的问题,所以这完全取决于你,但是这看起来'很好'?

ggplot(df2,aes(number,vc0,fill=number))+ 
geom_tile()+ 
scale_fill_continuous(low="white",high="red") 

enter image description here