#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» . Я обращался только к той части кода, к которой, как я думал, кто-нибудь обратится, чтобы помочь вам получить нужную строку.