我想生成一些数据的热图,以便可以间接看到密度。 但问题是数据必须从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))
你检查怎么做GGPLOT2热图?这可能有助于http://learnr.wordpress.com/2010/01/26/ggplot2-quick-heatmap-plotting/。 – Nikos 2014-11-25 14:09:15
你期望*它看起来像什么(说它不好看是模糊的)?你的data.frame只有2x2 ... – jbaums 2014-11-25 14:28:18
另外,你看过[这些帖子](http://stackoverflow.com/search?q=heatmap+%5Br%5D)? – jbaums 2014-11-25 14:29:33