【问题标题】:How to plot a CSV file containing labels and their counts in R?如何在 R 中绘制包含标签及其计数的 CSV 文件?
【发布时间】:2016-10-17 01:34:49
【问题描述】:

这里是新手,所以你可能会判断,但这是我的问题。

我有一个非常简单的结构化 CSV 文件,它有 2 列:标签(ASCII 文本值)作为第 1 列,它们各自的计数(数字)作为第 2 列。

例如,CSV 的格式为:

type,count
cat,23000
dog,444566,
wolf,3442
tiger,306
...

我想在 R 中绘制一个简单的折线图,其中 'counts' 作为 y 轴,标签在 x 轴。我希望能够真正看到标记在 x 轴或数据点上的“标签”,例如“狗”“猫”。我如何在 R 中做到这一点?

这是我目前所拥有的:

> heresmydata <- read.csv("data.csv")
> matplot(heresmydata[, 1], heresmydata[, -1], type="l")
Warning messages:
1: In xy.coords(x, y, xlabel, ylabel, log = log) :
  NAs introduced by coercion
2: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
> 

它会生成一个带有不正确标签的空图。

【问题讨论】:

    标签: r csv plot graph


    【解决方案1】:

    在基本 R 图形中粗略化。查看axismtextplot 选项进行优化。

    读入:data &lt;- read.csv("data.csv", header=TRUE, stringsAsFactors=FALSE)

    剧情:plot(data$count, type="l", axes=FALSE, ylim=c(min(data$count), max(data$count)), xlab="Creature", ylab="Count")

    Y轴:axis(side=2, at=c(min(data$count), max(data$count)), labels=c(min(data$count), max(data$count)))

    X轴:axis(side=1, at=seq(1,nrow(data),1), labels=data$type)

    【讨论】:

    • las=2 添加到X 轴命令以垂直显示文本并增加易读性。可以在同一命令中使用cex=.5 更改其大小。
    • 这确实绘制了折线图,但是,x-label 不显示实际的 ASCII 文本,例如 'cat' 'dog' 等,而是列出数字,例如 '1' '2'等等。有什么办法解决这个问题?
    • plot 调用中,axes=FALSE 最初应该禁止数字标签。然后在axis(side=1... 中,只要data$type 的类型为chr,您就应该得到绘制的文本。 R 是否在 plotaxis 调用中返回任何警告或错误?
    【解决方案2】:

    使用ggplot2

    library("ggplot2")
    ggplot(heresmydata, aes(x = type, y = count)) + 
      geom_bar(stat = "identity") +
      scale_y_log10()
    

    【讨论】:

    • 这“有效”,但结果非常难以辨认。它似乎是一个条形图(而不是折线图),并且没有与 x 值相关的“文本标签”。为清楚起见,一些 y 值非常低,例如 200,而另一些可能非常高(以百万计)。另外,我在 CSV 中总共有 1000 行
    • 如果你真的想要一个折线图,使用 geom_line 而不是 geom_bar。由于数据跨越几个数量级,您需要记录轴 - 请参阅编辑
    • 太棒了。某些“x-labels”或 X 轴上的 ASCII 文本值正在相互覆盖。有什么方法可以“倾斜”它们或确保它们不会相互覆盖(我选择了一个子集,现在只绘制了 20 个 X-labels)?
    • 通过添加以下内容修复它:+ theme(axis.text.x=element_text(angle=90,hjust=1,vjust=0.5)
    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 2015-09-03
    相关资源
    最近更新 更多