你如何在R中画出一个漩涡?我试图绘制1:100的数字列表 并且每7个数字为它分配一个因子'1',其他所有数字仅为'0'。我也有一个TRUE或FALSE的向量。如何绘制这些数字的漩涡并突出显示每七个数字?试着看看我是否可以拧紧或松开漩涡(theta)以对齐第7个数字。我用以下代码创建数据。我使用了两个不同的函数来查看哪个矢量效果最好。逻辑向量或“1”或“0”的向量。
returnint <- function( x ) {
if ( x == TRUE) {
return (1)
} else {
return (0)
}
}
isseven <- function( x ) {
if (x %% 7) {
return (0) # FALSE
} else {
return (1) # TRUE
}
}
fo = seq(1, 100)
fo.sev = NULL # factors
fo.int = NULL # as int 0 = FALSE , 1 = TRUE
for (i in 1:length(fo)) {
fo.sev[i] = as.logical(isseven(i))
fo.int[i] = returnint(fo.sev[i])
}
df <- data.frame(fo,fo.int,as.factor(fo.sev))
names(df) <- c("x","intx","seven")
df
答案 0 :(得分:3)
从https://en.wikipedia.org/wiki/Archimedean_spiral开始,阿基米德螺旋的极坐标为r=a+b*theta
,实数为a和b。以下代码可用于绘制一个:
# for some fixed real a, b
a <- 2
b <- 3
theta <- seq(0,10*pi,0.01)
r <- a + b*theta
df <- data.frame(x=r*cos(theta), y=r*sin(theta)) # Cartesian coords
library(ggplot2)
ggplot(df, aes(x,y)) + geom_point(col='red')
答案 1 :(得分:3)
(我承认在标题中回答了请求,但没有理解你的其他文本请求的内容,尽管我后来猜测了。)只需使用一对参数方程设置数据:
x = t*cos(t); y = t*sin(t)
你需要很好地实例化t
......如果你的目的是平滑的曲线:
t <- seq(0, 10, by=0.01)
x = t*cos(t); y = t*sin(t)
ggplot(data.frame(x,y), aes(x=x,y=y))+geom_path()
这是对绘制整数的请求的猜测;
png()
print( ggplot( df, aes(x=x*cos(x), y=x*sin(x))) +
geom_label(data=df, aes(label=x, color=intx, size=intx + 1) ) +
coord_equal() )
dev.off()
标签框看起来确实具有最小尺寸,因为即使它们的size
为零,它们也显得可见。我确实用label.padding = unit(0.05, "lines")