2014-11-25 63 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