#r #plot #scatter-plot
Вопрос:
Привет я создал гладкой точечной диаграмме цвета, основываясь на данные категории,теперь я не получаю, какой цвет, какие категории так понять, если я прохожу определенный цвет для каждой категории оно будет выглядеть более удобным согласно тому, как я могу сделать это col=df$cat
не цвет определенной точки оно принадлежит мне непонятно любой один предложить мне
определенный цвет для каждой категории, например, data1=зеленый, data2=синий, data3=черный, data4=красный
мои данные
A B cat
0.8803 0.0342 data1
0.9174 0.0331 data1
0.9083 0.05 data1
0.7542 0.161 data2
0.8983 0.0593 data2
0.8182 0.1074 data2
0.3525 0.3525 data3
0.5339 0.2288 data3
0.7295 0.082 data3
0.8 0.0417 data4
0.8291 0.0598 data4
0.8 0.025 data4
сценарий, который я пробовал
df=read.table("test.txt", sep='t', header=TRUE)
smoothScatter(df$B,df$A,,nrpoints=Inf,xlim=c(0,1),ylim=c(0,1), pch=20,cex=1, col=df$cat)
points(c(0,1),c(1,0),type='l',col='green',lty=2,lwd=2)
legend(0.30, 1, c("diagonal"),
col = c("green"),
lty = 2, lwd = 4)
Спасибо
Ответ №1:
Сначала создайте вектор цветов как именованный вектор. Затем составьте заговор с x=A
, y=B
и, geom_point
только, color=cat
. Диагональная линия рисуется geom_line
вызовом с новым data
аргументом, конечными точками линии.
library(ggplot2)
color <- c(data1="green", data2="blue", data3="black", data4="red")
ggplot(df, aes(A, B))
geom_point(aes(color = cat), alpha = 0.25)
geom_line(
data = data.frame(A = 0:1, B = 1:0),
mapping = aes(A, B),
color = "green",
linetype = "dashed"
)
scale_color_manual(values = color)
theme_bw()
Основание R
С smoothScatter
графиком все обстоит следующим образом.
colnum <- match(df$cat, names(color))
smoothScatter(
df$B, df$A,
nrpoints = Inf,
xlim = c(0, 1), ylim = c(0, 1),
pch = 20, cex = 1,
col = color[colnum]
)
points(c(0, 1), c(1, 0), type = 'l', col = 'green', lty = 2, lwd = 2)
legend(0.30, 1, "diagonal", col = "green", lty = 2, lwd = 4)
Или, если мы удалим nrpoints = Inf
smoothScatter(
df$B, df$A,
#nrpoints = Inf,
xlim = c(0, 1), ylim = c(0, 1),
pch = 20, cex = 1,
col = color[colnum]
)
points(c(0, 1), c(1, 0), type = 'l', col = 'green', lty = 2, lwd = 2)
legend(0.30, 1, "diagonal", col = "green", lty = 2, lwd = 4)
Данные
google_id <- "1FN0H7ilY9OwcQC7Y8iiLUZd2CTuJ9U4Z"
google_file <- sprintf("https://docs.google.com/uc?id=%samp;export=download", google_id)
df <- read.table(google_file, header = TRUE)
Комментарии:
1. Спасибо, но когда я пытаюсь это сделать со всем моим набором данных, он не работает, я точно знаю, падали ли мои значения, я пытался с этими данными drive.google.com/file/d/1FN0H7ilY9OwcQC7Y8iiLUZd2CTuJ9U4Z/…
2. Даже я пробовал с отдельными значениями для каждой категории, давал разные цвета, которые не совпадают
3. @Luckysardar , на который я перешел
ggplot
, см. правку.4. @Luckysardar Кроме того, я попытался сопоставить цвета с данными, используя свой предыдущий код, и это сработало, но, как и это
ggplot
, я сделаю это автоматически.5. Я попробовал ggplot, он показывает именно то, что я хотел, проблема в том, что я хотел предыдущий сюжет, пожалуйста, покажите мне сюжет и код, как он выглядит, я в моем случае он не выглядит так же