Я думаю, что два выхода ниже - готовые к использованию.
Первый использует базу R и jitter
, используемый для добавления некоторого шума к данным, чтобы точки с одинаковыми координатами отображались на разных позициях. Это хороший подход в этом случае (при условии, что вы упоминаете дрожание, поскольку данные немного изменены). Если у вас много очков, вы можете комбинировать этот подход с некоторой прозрачностью.
Прежде всего, мы делаем пример reproducible:
df <- read.table("http://socserv.socsci.mcmaster.ca/jfox/Books/Applied-Regression-3E/datasets/Vocabulary.txt", header=TRUE)
plot(jitter(education)~jitter(vocabulary), df, pch=20, col="#00000011",
xlim=range(vocabulary), ylim=range(education),
xlab="vocabulary", ylab="education")
Но в основном, вы можете пытаться построить таблицу сопряженности, поэтому второй, используя `gpplot2:
library(ggplot2)
# creates a contingency table
tab.df <- as.data.frame(with(df, table(education, vocabulary)))
ggplot(tab.df) + aes(x=vocabulary, y=education, fill=Freq, label=Freq) +
# colored tiles and labels (0s are omitted)
geom_tile() + geom_text(data=subset(tab.df, subset = Freq != 0), size=2) +
# cosmectics
scale_fill_gradient(low="white", high="red") + theme_linedraw()
Процентное соотношение (как для плиток, так и для этикеток) может быть лучшим выбором, но ваш вопрос был неопределенным в отношении ваших целей. И если вы хотите, первый участок, но ала ggplot2
вы можете работать вокруг:
ggplot(df) + aes(x=education, y=vocabulary) + geom_jitter(alpha=0.05)
Что «не выглядит правильно» об этом? – gung
Я не могу что-либо увидеть из этих данных. Интересно, если theres лучший способ построить его. Я читал? Jitter, но я не понимаю. –
Что вы хотите увидеть? Здесь недостаточно, чтобы дать ответ. – gung