我有一个必须在命令行中运行的代码。如果我从RStudio一块一块地运行它,它可以正常工作。当我从命令行运行它时,它会打开图形设备,但它仍然是空白的。
require(ggplot2)
#ds <- head(SOM_dist_tot)
num <- 6
ds <- c(1.00566799, 0.81354614, 0.36507594, 0.15541231, 0.13957369, 0.06986632)
vett <- as.data.frame(ds)
pdf("ggplot_test.pdf")
gioele <-ggplot(vett, aes(x= as.numeric(rownames(vett)), y =vett$ds))+
geom_point(size=2) + xlab("X") + ylab("Y")+
ggtitle("...")+
theme(axis.text.x = element_text(angle=-45, hjust=0, vjust=1),
plot.margin = unit(c(1, 1, 1, 1), "cm"),
plot.title = element_text(size = 20, face = "bold", colour = "black", vjust = -1))
#print(gioele)
plot(gioele)
dev.off()
print(gioele)
inputFromUser <- as.numeric(readLines(file("stdin"),1))
dev.off()
我想显示图形“gioele”,例如向用户提供信息。然后用户选择要插入的命令(inputFromUser
),然后窗口必须关闭。
你有什么想法吗?
答案 0 :(得分:0)
经过很多痛苦后我才明白这个问题:它是readLines()和图形设备之间的冲突。换句话说,它正确地打开了绘制图形的设备,但随后readLines(...)使图形设备变为空白(我不知道它在技术上是如何可能的)。
我找到了删除readLines()并使用更正确readline()
的解决方案。
require(ggplot2)
#ds <- head(SOM_dist_tot)
num <- 6
ds <- c(1.00566799, 0.81354614, 0.36507594, 0.15541231, 0.13957369, 0.06986632)
pdf("plot_test.pdf")
plot(ds[1:num], type="p", xlab="X", ylab="Y", col="red")
title(main="...", sub = "...", line=-1.2, cex.sub = 0.75, font.sub = 3, col.sub = "red")
dev.off()
#cat("Faccio il plot")
# plot(ds[1:num], type="p", xlab="X", ylab="Y", col="red")
# title(main="...", sub = "...", line=-1.2, cex.sub = 0.75, font.sub = 3, col.sub = "red")
vett <- as.data.frame(ds)
pdf("ggplot_test.pdf")
gg2 <-ggplot(vett, aes(x= as.numeric(rownames(vett)), y =vett$ds))+
geom_point(size=2) + xlab("X") + ylab("Y")+
ggtitle("...")+
theme(axis.text.x = element_text(angle=-45, hjust=0, vjust=1),
plot.margin = unit(c(1, 1, 1, 1), "cm"),
plot.title = element_text(size = 20, face = "bold", colour = "black", vjust = -1))
#print(gg2)
plot(gg2)
dev.off()
print(gg2)
#inputFromUser <- as.numeric(readLines(file("stdin"),1))
inputFromUser <- as.numeric(readline())
dev.off()