the*_*ond 1 r histogram ggplot2
我有一个data包含 9 个预测变量和一个ind值为 0 到 3 的指示变量的数据框。我需要为给定值为 的所有变量制作直方图ind。我已经写了一些代码;没有更好的主意,我只是将数据集分为 4 个不相交的子集。
data_no0 <- data[data$ind == 0, -1]
data_no1 <- data[data$ind == 1, -1]
data_no2 <- data[data$ind == 2, -1]
data_no3 <- data[data$ind == 3, -1]
ggplot(gather(data_no1), aes(value)) +
geom_histogram(bins = 6) +
facet_wrap(~key, scales = 'free_x')
Run Code Online (Sandbox Code Playgroud)
更重要的是,我希望能够比较不同值的直方图ind,因此我想分别将 x 的最小值和最大值固定为(即第一个变量)min(data$avg_f0env_sma0)和max(data$avg_f0env_sma)。
我尝试这样做:
scales_x <- list(
'avg_jitterlocal_sma'
= scale_y_continuous(limits = c(min(data$avg_jitterlocal_sma), max(data$avg_jitterlocal_sma))),
'avg_jitterddp_sma'
= scale_y_continuous(limits = c(min(data$avg_jitterddp_sma), max(data$avg_jitterddp_sma))),
'avg_shimmerlocal_sma'
= scale_y_continuous(limits = c(min(data$avg_shimmerlocal_sma), max(data$avg_shimmerlocal_sma))),
'avgx_pcm_fftmag_spectralflux_sma'
= scale_y_continuous(limits = c(min(data$avg_pcm_fftmag_spectralflux_sma), max(data$avg_pcm_fftmag_spectralflux_sma))),
'avg_pcm_fftmag_spectralcentroid_sma'
= scale_y_continuous(limits = c(min(data$avg_pcm_fftmag_spectralcentroid_sma), max(data$avg_pcm_fftmag_spectralcentroid_sma))),
'avg_pcm_fftmag_spectralharmonicity_sma_compare'
= scale_y_continuous(limits = c(min(data$avg_pcm_fftmag_spectralharmonicity_sma_compare), max(data$avg_pcm_fftmag_spectralharmonicity_sma_compare))),
'avg_f0final_sma'
= scale_y_continuous(limits = c(min(data$avg_f0final_sma), max(data$avg_f0final_sma))),
'avg_f0env_sma'
= scale_y_continuous(limits = c(min(data$avg_f0env_sma), max(data$avg_f0env_sma))),
'avg_loudness_sma3'
= scale_y_continuous(limits = c(min(data$avg_loudness_sma3), max(data$avg_loudness_sma3)))
)
ggplot(gather(data_no0), aes(value)) +
geom_histogram(bins = 6) +
facet_wrap(~key, scales = list(x = scales_x))
Run Code Online (Sandbox Code Playgroud)
但这不起作用。我也读过有关 的内容facet_grid_sc(),但也有一个问题。
看起来您的数据集可以使用一些整理,但除了数据整理原则之外,您似乎希望单独控制每个方面的比例 - 我是对的吗?
该lemon包包含一些有用的函数,包括facet_rep_wrap()和facet_rep_grid()。这些函数的一个有用功能是允许每个面具有不同比例的 y 或 x 轴。这是数据集的示例diamonds。
根据切割的价格直方图facet_wrap():
library(ggplot2)
library(lemon)
ggplot(diamonds, aes(x=price, fill=cut)) +
geom_histogram() +
facet_wrap(~cut)
Run Code Online (Sandbox Code Playgroud)
lemon::facet_rep_wrap()这是使用自由 y 尺度的相同绘图:
ggplot(diamonds, aes(x=price, fill=cut)) +
geom_histogram() +
facet_rep_wrap(~cut, scales="free")
Run Code Online (Sandbox Code Playgroud)