R中的y轴标签以及如何将x轴更改为R中的特定增量

R中的y轴标签以及如何将x轴更改为R中的特定增量,r,R,我想创建一个绘图,x轴增量为500000,y轴上有sampleid。以下代码可以创建绘图,但y轴标签不起作用,我不确定如何对x轴记号进行编码。此外,我必须手动将标题添加到数据文件中(然后在分配d时添加header=TRUE),以使代码正常工作。我不应该把专栏标题放进去,是吗?因为我使用了setNames d = read.delim("n_reads_per_sample.tsv", header = TRUE, sep = "\t") xticks <- ( ? incremen

我想创建一个绘图,x轴增量为500000,y轴上有
sampleid
。以下代码可以创建绘图,但y轴标签不起作用,我不确定如何对x轴记号进行编码。此外,我必须手动将标题添加到数据文件中(然后在分配
d
时添加
header=TRUE
),以使代码正常工作。我不应该把专栏标题放进去,是吗?因为我使用了setNames

   d = read.delim("n_reads_per_sample.tsv", header = TRUE, sep = "\t")

xticks <- ( ? increments of 500000 to xmax ? )
dotchart(
  sort(setNames(d$n_reads, d$X.sample)),
  xlim = c(0, at = xticks, 1 max(d$n_reads)),
  labels = dimnames(d[[1]])
  ,
  main = "reads per sample",
  xlab = "number of reads",
  ylab = "sample"
)

我现在不能得到你的全部数据,所以我只是在问题中使用你的样本。 不确定y轴标签不起作用是什么意思。在我看来,它们还不错。通过抑制由
点图
生成的x轴,然后使用
功能生成自己的轴,可以获得所需的x轴标签。这需要用
par
进行一点别致的步法。此外,除非伸出图形窗口,否则将没有足够的空间打印所有轴标签。我缩小了字体大小并拉伸了窗口以获得下图

UpperLimit <- ceiling(max(d$n_reads)/500000)*500000
xticks <- seq(0,UpperLimit, 500000)

par(xaxt = "n")
dotchart(
  sort(setNames(d$n_reads, d$X.sample)),
  xlim=c(0, UpperLimit),
  labels = dimnames(d[[1]]),
  main = "reads per sample",
  xlab = "number of reads",
  ylab = "sample"
)
par(xaxt = "s")
axis(1, at=xticks, cex.axis=0.7) 

关于轴的上限很好,谢谢。奇怪的是dimnames适合你。我确实输入了你的代码,但在我的图上仍然没有y轴标签。当我输入“d[[1]]”时,所有样本编号都打印得很好。但当我键入“labels=dimnames(d[[1]]),然后键入“labels”以查看标签包含名称向量时,返回“NULL”。这能说明问题吗?太好了。此外,dotchart手册中说“为每个点标记一个标签向量。对于向量,默认使用名称(x),对于矩阵,行标签dimnames(x)[[1]]”,因此我认为我的论点不太正确。这里有一些值得检查的地方。描述数据时,您有
x.sample
(小写x)。您的setNames语句具有
d$X.sample
(大写X)。你的代码一致吗?我已经把这两个都变成了
X
(大写)。如果你错了,它会产生你得到的结果(没有名字)啊,我明白了,我的文件不是作为数字向量或矩阵读取的,这是点图工作所需要的,标签函数工作所需要的。我的文件正在作为数据帧读取。我只是在尝试如何强制创建一个矩阵,但仍然保留我的y轴标签。当我制作上面的图表时,我使用了data.frame。你检查过x.sample和x.sample吗?
UpperLimit <- ceiling(max(d$n_reads)/500000)*500000
xticks <- seq(0,UpperLimit, 500000)

par(xaxt = "n")
dotchart(
  sort(setNames(d$n_reads, d$X.sample)),
  xlim=c(0, UpperLimit),
  labels = dimnames(d[[1]]),
  main = "reads per sample",
  xlab = "number of reads",
  ylab = "sample"
)
par(xaxt = "s")
axis(1, at=xticks, cex.axis=0.7)