【发布时间】:2014-11-25 14:07:07
【问题描述】:
我想生成一些数据的热图,以便可以间接看到密度。 但问题是必须从 xml 文件中解析数据并保存在数据框中。我知道热图需要一个矩阵作为源,我试图将我的数据框转换为这样的矩阵。但是热图的结果是,好吧,让我们说它看起来不太好。你能帮帮我吗?
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 做热图吗?这可能有助于learnr.wordpress.com/2010/01/26/ggplot2-quick-heatmap-plotting。
-
你期望它看起来像什么(说它看起来不好是含糊的)?您的 data.frame 只有 2x2...
-
另外,你看过these posts吗?
标签: r dataframe heatmap matrix-multiplication