私はカテゴリデータを扱っており、ポイントのサイズがそのポイントの位置の頻度を表す散布図をプロットしようとしています。
最初にジッターで試しましたが、その解決策に不満があります。
周波数列を作成できると思っていましたが、そのためのコードを作成できませんでした。
qplot(X, Y, data=datatable, geom=c("point"))
誰かアイデアはありますか?
どうも
これがあなたが何を求めているかの推測です。以下のdf
データ フレームでは、x
およびy
がカテゴリ変数です。頻度カウントを取得するには、さまざまな方法があります。ここでは、パッケージのddply()
関数を使用します。plyr
プロットが続きます。への呼び出しではggplot
:size
美学により、ポイント サイズが周波数を表すことが保証されます。関数は、scale_size_discrete()
プロット上の点のサイズを制御します。
# Some toy data
df <- structure(list(x = structure(c(1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L,
4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L,
5L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L,
4L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 1L, 2L, 1L, 2L,
3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L,
4L, 5L, 1L, 2L, 3L, 4L, 5L), .Label = c("1", "2", "3", "4", "5"
), class = "factor"), y = structure(c(1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 5L, 5L,
5L, 5L, 5L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L,
4L, 4L, 4L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 2L, 2L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L,
4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L), .Label = c("1", "2", "3",
"4", "5"), class = "factor")), .Names = c("x", "y"), row.names = c(NA,
79L), class = "data.frame")
# Required packages
library(plyr)
library(ggplot2)
# Get the frequency counts
dfc <- ddply(df, c("x", "y"), "nrow", .drop = FALSE)
#dfc
# The plot
ggplot(data = dfc, aes(x = x, y = y, size = factor(nrow))) +
geom_point() +
scale_size_discrete(range = c(1, 10))
または、df
データ フレームを使用した同じプロット - 集計されていないデータ。
ggplot(data = df, aes(x = x, y = y)) +
stat_sum(aes(size = factor(..n..)), geom = "point") +
scale_size_discrete(range = c(1, 10))