Я хочу изобразить две функции разными цветами и стилями точек с соответствующей легендой простым R.
У меня несколько вопросов:
Я использую
pch=21
иpch=22
. Насколько я понимаю, это «заполненные» символы. В легенде они кажутся заполненными, как и ожидалось, но на самом графике они кажутся пустыми. Что случилось?Могу ли я увеличить расстояние между точками, не задавая сетку вручную? может быть, выбрав количество точек для печати?
Не стесняйтесь добавлять любые советы, которые захотите. Я новичок в R. В частности, есть ли лучший способ построить две функции? например определяя векторы функций? и разве не было бы способа автоматически сгенерировать легенду без указания цвета и формы в простом R?
Вот мой код:
par(new=TRUE)
p1 <- plot(function(x){ x^(2)/2 }
, 0, 100
, xlab = "x"
, ylab = "y"
, ylim = c(0,5000)
, las = 1
, type = "p"
, cex = 0.8
, pch = 21
, col = "red"
)
par(new=TRUE)
p2 <- plot(function(x){ (1-x^(2))/2 }
, 0, 100
, xlab = ""
, ylab = ""
, axes = FALSE
, type = "p"
, cex = 0.8
, pch = 22
, col = "blue"
)
par(new=TRUE)
l <- legend( "topleft"
, inset = c(0,0.4)
, cex = 1.5
, bty = "n"
, legend = c("A", "B")
, text.col = c("red", "blue")
, pt.bg = c("red","blue")
, pch = c(21,22)
)
После различных исследований я решил использовать par(new=TRUE)
"трюк" для совмещения двух функций (вместо, скажем, использования matplot или комбинации графика и точек или макета). Было ли это плохим шагом для начала? (Edit: да, очень плохо, см. Ниже) +1, если вы не просите меня прочитать руководство ;-)
Изменить: сводка решений
Благодаря Йорану и Дидзису Эльфертс я решил несколько своих проблем. Для записи я хотел бы резюмировать здесь:
Чтобы получить закрашенные символы на графике, необходимо указать как col (цвет), так и bg (фон). Это верно даже для
pch=21
иpch=22
, которые не заполняются автоматически указанным цветом. Чтобы символы в легенде закрашивались, необходимо указать как col, так и pt.bg. Здесь одного только bg недостаточно.очень плохая идея использовать
par(new=TRUE)
сaxes=FALSE
, как я сделал изначально, потому что наложенные графики не обязательно используют одну и ту же систему координат. Предполагаемая функция для второго графика была(100^2-x^2)/2
, но я случайно написал(1-x^2)/2
и не осознал этого, потому что я установил оси = FALSE.
В общем, вот мое предпочтительное решение:
curve( x^2/2
, from = 0
, to = 100
, n = 30
, type = "p"
, pch = 21 # alternatively pch=15 is a solid symbol
, col = "red" # colors the outline of hollow symbol pch=21
, bg = "red" # fills hollow symbol pch=21 with color
, xlab = "x"
, ylab = "y"
)
curve( (100^2-x^2)/2
, from = 0
, to = 100
, n = 30
, type = "p"
, pch = 22 # alternative pch=16
, col = "blue"
, bg = "blue"
, add = TRUE
)
legend( "topleft"
, inset = c(0,0.4),
, cex = 1.5,
, bty = "n",
, legend = c("A", "B"),
, text.col = c("red", "blue"),
, col = c("red", "blue"),
, pt.bg = c("red","blue")
, pch = c(21,22)
)
Это дает сюжет, подобный показанному Джораном. Большое спасибо вам обоим за вашу помощь.
pt.bg
. - person joran   schedule 04.04.2013pch
21 и 22 - это возможность устанавливать разные цвета для контура и заливки каждой точки. Если вы хотите, чтобы отдельная точка имела только один цвет, проще использоватьpch
15 и 16. При использовании 15 и 16 вам вообще не нужно беспокоиться оbg
иpt.bg
. - person Gregor Thomas   schedule 05.04.2013