我正在尝试在ggplot2中创建直方图,其中x轴在预定点之后从线性缩放过渡到log2缩放。换句话说,我希望x轴的线性比例达到某个阈值,然后在该阈值之后使用log2比例。
因此,在阈值之前,x轴应看起来像您通过简单操作即可获得的结果:
downloadFile() {
const blob = new Blob(['blablabla.log'], {type: 'text/log'});
const dataURL = window.URL.createObjectURL(blob);
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob);
return;
}
const link = document.createElement('a');
link.href = dataURL;
link.download = 'export file.log';
link.click();
setTimeout(() => {
window.URL.revokeObjectURL(dataURL);
}, 100);
}
并且在阈值之后,x轴应该看起来像从操作中得到的:
ggplot(data,aes(x=value)) + geom_histogram()
问题是,虽然我可以分别制作这些直方图(一个以线性标度表示所有直方图,另一个以log2标度表示所有直方图),但我不知道如何转换并同时使用一个直方图。
答案 0 :(得分:0)
我同意评论员的意见,认为这作为一个单一的数字是有问题的。但是,如果您有一个图来显示所有数据,然后再用插图/子图来显示一个子集,则可能会很有帮助。在这里,我使用cowplot::plot_grid
组合了两个图形,但是还有其他软件包可供安排(例如gridExtra
)。对于如何标记数字要格外谨慎。
library(ggplot2)
x <- rexp(1000, .05) + rep(c(0, 5), each = 500)
cowplot::plot_grid(
ggplot(data.frame(x = x[x<5]), aes(x)) +
geom_histogram() +
labs(title = "Subset, x<5, linear-scale"),
ggplot(data.frame(x), aes(x)) +
geom_vline(xintercept = 5, color = "red", size = 2) +
geom_histogram() +
scale_x_log10() +
labs(title = "All data, log-scale")
)