我正在R中进行一些基本统计,并且尝试为循环的每次迭代使用不同的颜色。因此,i = 1的所有数据点应具有相同的颜色,i = 2的所有数据点应具有相同的颜色,以此类推。最好的是,对于不同的i,例如从黄色到蓝色,应具有不同的颜色。 (我已经尝试过与Colorramp等打交道,但是我没有设法完成它。)
感谢您的帮助。
library(ggplot2)
#dput(thedata[,2])
#c(1.28994585412464, 1.1317747077577, 1.28029504741834, 1.41172820353708,
#1.13172920065253, 1.40276516298315, 1.43679599499374, 1.90618019359643,
#2.33626745030772, 1.98362330686504, 2.22606615548188, 2.40238822720322)
#dput(thedata[,4])
#c(NA, -1.7394747097211, 2.93081902519318, -0.33212717268786,
#-1.78796119503752, -0.5080871442002, -0.10110379236627, 0.18977632798691,
#1.7514277696687, 1.50275797771879, -0.74632159611221, 0.0978774103243802)
#OR
#dput(thedata[,c(2,4)])
#structure(list(LRUN74TTFRA156N = c(1.28994585412464, 1.1317747077577,
#1.28029504741834, 1.41172820353708, 1.13172920065253, 1.40276516298315,
#1.43679599499374, 1.90618019359643, 2.33626745030772, 1.98362330686504,
#2.22606615548188, 2.40238822720322), SELF = c(NA, -1.7394747097211,
#2.93081902519318, -0.33212717268786, -1.78796119503752, -0.5080871442002,
#-0.10110379236627, 0.18977632798691, 1.7514277696687, 1.50275797771879,
#-0.74632159611221, 0.0978774103243802)), row.names = c(NA, 12L
#), class = "data.frame")
x1=1
xn=x1+3
plot(0,0,col="white",xlim=c(0,12),ylim=c(-5,7.5))
for(i in 1:3){
y=thedata[x1:xn,4]
x=thedata[x1:xn,2]
reg<-lm(y~x)
points(x,y,col=colors()[i])
abline(reg,col=colors()[i])
x1=x1+4
xn=x1+3
}
答案 0 :(得分:0)
除了缺乏可复制的示例外,您似乎还有一些误解。
首先,函数colors
不使用数字参数,请参见?colors
。因此,如果您想在每次迭代中获取不同的颜色,则需要像colors()[i]
那样调用它。该代码应类似于以下内容(没有可复制的示例):
for (i in 20:30){
plot(1:10, 1:10, col = colors()[i])
}
请记住,在for循环内的第一行和第二行中调用x1
和xn
,在定义它们之前也会引起错误。 / p>
答案 1 :(得分:0)
colorRamp
和colorRampPalette
的基本思想是它们是功能-它们是返回功能的函数 。
从帮助页面:
colorRampPalette
返回一个函数,该函数接受整数参数(所需的颜色数)并返回对给定序列进行内插的颜色字符向量(请参见rgb)(类似于heat.colors
或{{1 }}。
因此,我们将从terrain.colors
中获得一个黄色到蓝色的调色板函数,然后为它提供我们希望沿着该渐变实际获得颜色的颜色数量:
colorRampPalette
您可以仅通过可视化调色板来进行操作-为不同的# create the palette function
my_palette = colorRampPalette(colors = c("yellow", "blue"))
# test it out, see how it works
my_palette(3)
# [1] "#FFFF00" "#7F7F7F" "#0000FF"
my_palette(5)
# [1] "#FFFF00" "#BFBF3F" "#7F7F7F" "#3F3FBF" "#0000FF"
# Now on with our plot
x1 = 1
xn = x1 + 3
# Set the number of iterations (number of colors needed) as a variable:
nn = 3
# Get the colors from our palettte function
my_cols = my_palette(nn)
# type = 'n' means nothing will be plotted, no points, no lines
plot(0, 0, type = 'n',
xlim = c(0, 12),
ylim = c(-5, 7.5))
# plot
for (i in 1:nn) {
y = thedata[x1:xn, 2]
x = thedata[x1:xn, 1]
reg <- lm(y ~ x)
# use the ith color
points(x, y, col = my_cols[i])
abline(reg, col = my_cols[i])
x1 = x1 + 4
xn = x1 + 3
}
值尝试以下代码。您还可以尝试不同的选项,也许是不同的起始颜色。我更喜欢使用调色板的n
参数来获得更好的结果。
space = "Lab"