Почему мои линии не отображаются в R при использовании инструкции points с существующим графиком?

#r #plot #graph

#r #график #График

Вопрос:

Я работаю над книгой, R Student Companion , и в первой главе я столкнулся с проблемой. Я пытаюсь построить график, используя R, но оператор «points» не отображает мою линию на графике.

Вот что у меня происходит. Я определяю некоторые переменные списка и строю их как таковые.

 moose.density=c(.17,.23,.23,.26,.37,.41,.66,.80,1.11,1.30,1.37,1.41,1.73,2.49)
kill.rate=c(.37,.47,1.9,2.04,1.12,1.74,2.78,1.85,1.88,1.96,1.8,2.44,2.81,3.75)
plot(moose.density,kill.rate,type="p")
  

В результате я получаю этот график:

График.

Затем я добавляю эти значения и использую оператор «points» для построения линии.

 m=2.5*(0:100)/100
a=3.37
b=0.47
k=b*m/(a m)
points(m,k,type="p")
  

Это ожидаемый график из книги, но у меня ничего не меняется. Я делаю что-то не так? Является ли оператор points устаревшим? Я следил за книгой построчно.

График

Я подумал, что это может иметь какое-то отношение к моей установке R на Manjaro, но попробовал это на компьютере с Windows и получил тот же результат.

Комментарии:

1. Я думаю, что есть проблема с вашим кодом. Ваши k значения заканчиваются примерно на 0.20, тогда kill.rate как начинаются с 0.37. Таким образом, ни одно из k значений не отображается на графике, потому что все они ниже существующего минимума.

2. Вот страница из книги. Вы неправильно определили k . Так и должно быть k = a * m / (b m) .

3. и это должно быть points(m,k,type="l") (не type="p" )

4. @AllanCameron Да, я тоже так думал, мне нужна линия, а не точки. Похоже, в этой книге есть несколько ошибок.

5. @neilfws Если вы напишете в своем комментарии в качестве ответа, я могу пометить его как правильный. Еще раз спасибо.

Ответ №1:

Из обсуждения комментариев следует, что код в этой книге содержит несколько ошибок на определенных страницах, но не на других.

Наиболее существенная ошибка заключается в том, что:

 k = b * m / (a   m)
  

генерирует значения, которые слишком малы, чтобы отображаться на графике. Это должно быть:

 k = a * m / (b   m)
  

Ответ №2:

Похоже, что кто-то уже решил одну часть проблемы. Далее вы должны изменить points(m,k,type="p") на lines(m, k) .

Комментарии:

1. В чем разница между points(m,k,type="l") и lines(m,k) ? Они оба отображают одну и ту же линию.

2. Ах, никакой разницы. Я видел, что у вас изначально был type = «p» . Я обращался только к той части кода, к которой, как я думал, кто-нибудь обратится, чтобы помочь вам получить нужную строку.