用R创建棒棒糖样的绘图

用R创建棒棒糖样的绘图,r,ggplot2,melt,R,Ggplot2,Melt,我有一个.csv文件,看起来像: Pos,ReadsME_016,ReadsME_017,ReadsME_018,ReadsME_019,ReadsME_020,ReadsME_021 95952794,62.36,62.06,55.56,51,60.35,44.27 95952795,100,100,100,100,100,100 95952833,0,0,-,0,-,- 95952846,0,0,-,0,0,- 95952876,0,-,0,0,0,0 95952877,38.89,28.9

我有一个.csv文件,看起来像:

Pos,ReadsME_016,ReadsME_017,ReadsME_018,ReadsME_019,ReadsME_020,ReadsME_021
95952794,62.36,62.06,55.56,51,60.35,44.27
95952795,100,100,100,100,100,100
95952833,0,0,-,0,-,-
95952846,0,0,-,0,0,-
95952876,0,-,0,0,0,0
95952877,38.89,28.98,25.67,36.99,37.91,16.86
95952878,100,100,100,100,100,100
95952884,0,-,0,-,-,0
95952897,18.7,20.52,20.94,16.43,22.68,12.55
95952898,100,100,75,80,-,100
95952902,10.88,8.93,10.22,10.63,13.51,6.06
95952903,100,100,100,75,-,100
95952915,10.75,8.7,7.91,8.35,15.12,8.88
我想要的是创建一个与此类似的绘图:

然而,我所有的尝试都失败了。不幸的是,该工具还不可用,我无法阅读源代码。 我想到了ggplot和melt,但我没有接近这个图表。如何实现所有读取样本(ReadsME_016、ReadsME_017、…)都列在x轴上,位置列在y轴上?我不知道如何处理x轴和y轴都是分类的,而绘制的值应该显示百分比

dataset <- melt(dataset, id.vars="Pos")
ggplot(dataset, aes(x=value, y=Pos, colour=variable)) + geom_point() 

首先,要确保正确读取数据。非数值(特别是“-”)与数值混合在一起。我想这些都是丢失的值。确保使用
na.strings=“-”
让R知道这一点。然后,为了与示例图更一致,我改变了变量

library(reshape2) # for melt()
library(ggplot2) # for ggplot()

dataset <- read.table("file.txt", header=TRUE, sep=",", na.strings="-")
ggplot(melt(dataset, id.vars="Pos"), 
    aes(x=Pos, y=variable, colour=cut(value, breaks=5))) + 
    geom_point() 
library(重塑2)#用于melt()
图书馆(ggplot2)#用于ggplot()

数据集我正在准确地使用您的代码,但是我得到了错误:
剪切错误。默认值(值,breaks=5):“x”必须是数字
我使用的是.csv文件和读取的.csv文件有区别吗?听起来您的输入数据集中确实存在问题。如果您的数据集是真实的,那么您发布的内容可能不具有很好的代表性。尝试发布一个重新创建了您的确切问题的。虽然您说上面提到的工具不可用,但联机版本是,源代码是。我无法打开联机版本,但感谢您提供的源代码!
library(reshape2) # for melt()
library(ggplot2) # for ggplot()

dataset <- read.table("file.txt", header=TRUE, sep=",", na.strings="-")
ggplot(melt(dataset, id.vars="Pos"), 
    aes(x=Pos, y=variable, colour=cut(value, breaks=5))) + 
    geom_point()