Контролировать размер точек на графике рассеяния R? - PullRequest
106 голосов
/ 05 апреля 2010

В R функция plot() принимает аргумент pch, который управляет отображением точек на графике. Я делаю диаграммы рассеяния с десятками тысяч точек и предпочитаю маленькую, но не слишком маленькую точку. По сути, я считаю pch='.' слишком маленьким, а pch=19 слишком толстым. Есть что-то посередине или какой-то способ уменьшить точки как-то?

Ответы [ 3 ]

94 голосов
/ 05 апреля 2010

pch = 20 возвращает символ размером между"." и 19.

Это заполненный символ (что, вероятно, то, что вы хотите).

Кроме того, даже базовая графическая система в R позволяет пользователю детально контролировать размер, цвет и форму символов. Например.,

dfx = data.frame(ev1=1:10, ev2=sample(10:99, 10), ev3=10:1)

with(dfx, symbols(x=ev1, y=ev2, circles=ev3, inches=1/3,
                  ann=F, bg="steelblue2", fg=NULL))

Graph example

88 голосов
/ 05 апреля 2010

Попробуйте аргумент cex:

?par

  • cex
    Числовое значение, дающее сумма, на которую чертит текст и символы должны быть увеличены относительно по умолчанию. Обратите внимание, что некоторые графические функции, такие как plot.default есть аргумент этого имя, которое умножает это графическое параметр и некоторые функции, такие как точки принимают вектор значений которые переработаны. Другое использование будет принять только первое значение, если вектор длиной больше единицы в комплект поставки.
19 голосов
/ 05 апреля 2010

Как указано rcs , cex выполнит работу в базовом графическом пакете. Я считаю, что вы не хотите делать свой график в ggplot2, но если вы это сделаете, есть size эстетический атрибут, которым вы можете легко управлять (ggplot2 имеет удобные аргументы функций: вместо ввода cex (расширение символов), в ggplot2 вы можете напечатать, например, size = 2, и вы получите точку 2 мм).

Вот пример:

### base graphics ###
plot(mpg ~ hp, data = mtcars, pch = 16, cex = .9)

### ggplot2 ###
# with qplot()
qplot(mpg, hp, data = mtcars, size = I(2))
# or with ggplot() + geom_point()
ggplot(mtcars, aes(mpg, hp), size = 2) + geom_point()
# or another solution:
ggplot(mtcars, aes(mpg, hp)) + geom_point(size = 2)
...