R语言 当因子值用于x轴时,绘图函数中的“col”参数不起作用

iezvtpos  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(146)

我正在做季度分析,我想绘制一个图表。为了保持x轴的连续性,我将季度转换为因子。但是当我使用plot函数并试图将其着色为红色时,col参数不起作用。
举个例子:

quarterly_analysis <- data.frame(Quarter = as.factor(c(2020.1,2020.2,2020.3,2020.4,2021.1,2021.2,2021.3,2021.4)),
  AvgDefault = as.numeric(c(0.24,0.27,0.17,0.35,0.32,0.42,0.38,0.40)))

plot(quarterly_analysis, col="red")

但我得到的图形为黑色,如下所示:

sirbozc5

sirbozc51#

除非每个因子具有多个值,否则将其转换为因子并不适合绘制-它会尝试绘制箱形图样式的图。例如,对于同一因子中的10个观测,col = "red"颜色将显示为填充:

set.seed(123)
fact_example <- data.frame(factvar = as.factor(rep(LETTERS[1:3], 10)),
                           numvar = runif(30))

plot(fact_example$factvar, fact_example$numvar,
     col = "red")

由于每个因子只有一个观测值,这并不理想,因为它只是向您显示箱形图将生成的线。
您可以使用border = "red

plot(quarterly_analysis$Quarter, 
     quarterly_analysis$AvgDefault, border="red")

或者,如果你想要更大的灵活性,你可以用数字来绘制它,并做一些小的调整以获得更多的控制(例如,可以改变pch,或者使它成为一个线图):

# make numeric x values to plot
x_vals <- as.numeric(substr(quarterly_analysis$Quarter,1,4)) + rep(seq(0, 1, length.out = 4))

par(mfrow=c(1,3))
plot(x_vals, 
     quarterly_analysis$AvgDefault, col="red",
     pch = 7, main = "Square Symbol", axes = FALSE)
  axis(1, at = x_vals,
     labels = quarterly_analysis$Quarter)
  axis(2)

plot(x_vals, 
     quarterly_analysis$AvgDefault, col="red",
     type = "l", main = "Line graph", axes = FALSE)
  axis(1, at = x_vals,
     labels = quarterly_analysis$Quarter)
  axis(2)

plot(x_vals, 
     quarterly_analysis$AvgDefault, col="red",
     type = "b", pch = 7, main = "Both", axes = FALSE)
  axis(1, at = x_vals,
     labels = quarterly_analysis$Quarter)
  axis(2)

数据类型

set.seed(123)
quarterly_analysis <- data.frame(Quarter = as.factor(paste0(2019:2022,
                                                            rep(c(".1", ".2", ".3", ".4"), 
                                                                each = 4))),
                                 AvgDefault = runif(16))
quarterly_analysis <- quarterly_analysis[order(quarterly_analysis$Quarter),]

相关问题