Попытка иметь многоцветную метку на моем графике (используя R) - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь использовать метки с 3 цветами на своем графике на языке R, но, похоже, не могу. Я попытался решение, предложенное здесь , похоже, не работает для моей проблемы. Вот код для генерации моего сюжета:

pdf("report/500ERR_plots.pdf", width=10, height=7)

allDataTable_500$Date <- as.Date(allDataTable_500$Date)

totalTs <- allDataTable_500$Total

plot(allDataTable_500$Date, allDataTable_500$Total, xlab="Date", ylab="Total", las=2, xaxt="n", type="o", xlim=as.Date(c(allDataTable_500$Date[1], allDataTable_500$Date[16])), ylim=c(0, max(totalTs) + 200), cex = 0.8)
axis.Date(side = 1, at = as.Date(allDataTable_500$Date), format = "%d %b", las=2, cex = 0.1)
grid(NULL, NULL, col = "lightgray", lty = "dashed", lwd = par("lwd"), equilogs = TRUE)
title(main=paste("All 500 Errors from ", allDataTable_500$Date[1], " to ", allDataTable_500$Date[16], "\nReport generated on ", allDataTable_500$Date[16], " at ", allDataTable_500$ProducedAt[1]), col.main="red", font.main=2)
text(x = allDataTable_500$Date, y = allDataTable_500$Total, label = paste(allDataTable_500$Total , "\n", totalRequestDataTable$Total,"\n(",round((allDataTable_500$Total / totalRequestDataTable$Total * 100), 3), "%)"), pos = 3, cex = 0.7, col = "blue")

Вот как метки выглядят на данный момент: labelExample Я хочу, чтобы первая строка метки была красной, вторая - синей, а третья - черной, это возможно?

PS: я уже пытался добавить несколько цветов к аргументу col, но Rstudio не выводит нужный мне график. Вот как это выглядит с несколькими цветами в аргументе col: MultipleColorPlot . Например, если пик на этом графике, я бы хотел, чтобы 184 был красным, 452964 - синим, а (0,041%) - черным.

1 Ответ

0 голосов
/ 29 июня 2018

Вы можете разделить метки на три группы, добавить 3 метки и настроить их со смещением :

Или вы также можете использовать ggplot2 и ggrepel, которые будут корректировать метки, если они перекрываются.

allDataTable_500 <- data.frame(
  Date = runif(10, 1, 100),
  Total = runif(10, 100, 400)
)

plot(allDataTable_500$Date, 
     allDataTable_500$Total, xlab="Date", ylab="Total", las=2, xaxt="n", type="o", 
     cex = 0.8)
axis(side = 1, at = (allDataTable_500$Date), cex = 0.1)
grid(NULL, NULL, col = "lightgray", lty = "dashed", lwd = par("lwd"), equilogs = TRUE)

text(x = allDataTable_500$Date, y = allDataTable_500$Total, 
     label = paste(allDataTable_500$Total , "\n"), 
     pos = 3, cex = 0.7, 
     col = c("black"))

text(x = allDataTable_500$Date, y = allDataTable_500$Total, 
     label = paste(allDataTable_500$Total , "\n"), 
     pos = 3, cex = 0.7, offset = 1, 
     col = c("blue"))

text(x = allDataTable_500$Date, y = allDataTable_500$Total, 
     label = paste(allDataTable_500$Total , "\n"), 
     pos = 3, cex = 0.7, offset = 1.5, 
     col = c("red"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...