Уравнение на графе Проблема: вычисление не выполнено в `stat_poly_eq ()`: переменные длины различаются (найдено для '(веса)') - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь создать график для данных моей диссертации и получаю сообщение об ошибке ниже. График работает, но уравнения не напечатаны на нем. Я не могу понять, в чем проблема. Была строка с «NA», но я удалил ее вручную из data.frame.

**** Предупреждение: ошибка при вычислении в stat_poly_eq(): переменные длины отличаются (найдено для '(веса) ') ****

Любая помощь будет принята с благодарностью. Код моего графика, отображающего ошибку, приведен ниже.

scatter.smooth(logspinbossht ~ logtestdia2)

df <- data.frame(logtestdia2, logspinbossht)

df6 <- df6[-c(574), ] ##remove NA

formula6 <- logspinbossht ~ logtestdia2
reg6 <- ggplot(df6, aes(x = logtestdia2, y = logspinbossht)) +
  geom_point() + 
  stat_smooth() + 
  stat_poly_eq(
    aes(label = paste(stat(eq.label), stat(adj.rr.label), sep = "~~~~")),
    formula = formula6, 
    parse=TRUE
  )

reg6 + 
  ggtitle("Spine Boss Length vs Test Diameter") + 
  xlab("Log Transformed Test Diameter (mm)") + 
  ylab("Log Transformed Spine Boss Length (mm)")

1 Ответ

0 голосов
/ 05 февраля 2020

Я подозреваю, что ваша проблема может быть следствием путаницы объектов.

Ваш код подразумевает, что у вас есть два векторных объекта (с именами logtestdia2 и logspinbossht) определенной длины. Они помещаются в объект data.frame df6, а одна строка df6 удаляется.

Позже вы используете df6 data.frame для вызова ggplot(), , но также формула, которая основана на векторных объектах . Эти векторы на один элемент длиннее df6. Несоответствие длины приводит к появлению предупреждения.

Если я прав, ваш код может работать, если вы измените формулу следующим образом:

library(ggplot2)
library(ggpmisc)

# fake vector data
logtestdia2 <- log(sample(1:100, 1000, replace = TRUE))
logspinbossht <- log(sample(1:10, 1000, replace = TRUE))

# fake data.frame
df6 <- data.frame(logtestdia2,logspinbossht)

# remove row
df6 = df6[-c(574), ] 

# use the vectors from the data.frame
formula6 = df6$logspinbossht ~ df6$logtestdia2

# plot
reg6 <- ggplot(df6, aes(x = logtestdia2, y = logspinbossht))+
  geom_point()+
  stat_smooth()+
  stat_poly_eq(aes(label=paste(stat(eq.label),stat(adj.rr.label),sep = "~~~~")),formula=formula6,parse=TRUE)+
  ggtitle("Spine Boss Length vs Test Diameter")+
  xlab("Log Transformed Test Diameter (mm)")+
  ylab("Log Transformed Spine Boss Length (mm)")

reg6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...