为什么我们不能对R中的值绘制这个简单的文本?

时间:2017-06-29 21:17:19

标签: r plot

我使用XML包从HTML表格中收集了一些信息:

IntExpr x = ctx.mkIntConst("x");
solver.add(ctx.mkGT(x, ctx.mkInt(0))); // (assert (> x 0))
solver.add(ctx.mkLT(x, ctx.mkInt(5))); // (assert (< x 5))

library("XML") library("RCurl") library("rlist") theurl = getURL("http://www.victoria2wiki.com/Countries_table", .opts = list(ssl.verifypeer = FALSE)) tables <- readHTMLTable(theurl, as.data.frame = TRUE) 现在包含来自页面上表格的tables信息。 然后,我们使用以下内容将此list转换为list

dataframe

df <- do.call(rbind.data.frame, tables) 显示

names(df)

[1] " Country\n" " Tier\n" " Population\n" " Literacy\n" 显示所有人口数量。我们尝试使用以下方式绘制它:

df[,3],但图表不正确,并在X轴上显示人口数量,但没有意义。

我们如何根据简单的R数据框架绘制国家名称与人口的关系?我们想要的是Y轴上的种群和X轴上的国家名称的简单线图。

1 个答案:

答案 0 :(得分:2)

这是一个可能的解决方案:

library("XML")
library("RCurl")
library("rlist")
theurl = getURL("http://www.victoria2wiki.com/Countries_table", .opts = list(ssl.verifypeer = FALSE))
tables <- readHTMLTable(theurl, as.data.frame = TRUE)

# tables is a list with two elements
# The data frame is stored in the second element of this list
df <- tables[[2]]
colnames(df) <- c("Country", "Tier", "Population", "Literacy")

# Population is a factor and needs to be converted into a numeric vector
par(mar=c(3,7,1,1))
barplot(as.numeric(gsub(",", "", df$Population)), 
        names.arg=df$Country, horiz=T, las=1, cex.names=0.6)

enter image description here