我有一个多方面的情节,数据非常多样化.所以有些方面只有1个x值,但有些方面有13个x值.我知道有一个参数space='free'可以通过它代表的数据调整每个方面的宽度.
我的问题是,是否有可能手动调整此空间?由于我的一些方面很小,因此无法再读取刻面中的标签.我做了一个可重复的例子来说明我的意思.
df <- data.frame(labelx=rep(c('my long label','short'), c(2,26)),
labely=rep(c('a','b'), each=14),
x=c(letters[1:2],letters[1:26]),
y=LETTERS[6:7],
i=rnorm(28))
ggplot(df, aes(x,y,color=i)) +
geom_point() +
facet_grid(labely~labelx, scales='free_x', space='free_x')
Run Code Online (Sandbox Code Playgroud)
因此,根据您的屏幕,my long labelfacet会被压缩,您无法再读取标签.
我在互联网上发现了一个似乎完全符合我想做的帖子,但这似乎已经不再适用了ggplot2.该帖子是2010年.
https://kohske.wordpress.com/2010/12/25/adjusting-the-relative-space-of-a-facet-grid/
他建议使用facet_grid(fac1 + fac2 ~ fac3 + fac4, widths = 1:4, heights = 4:1),所以widths并heights手动调整每个面大小.
我不确定究竟该怎么称呼它,但我试图实现一种"破碎的直方图"或"轴间隙"效应:http://gnuplot-tricks.blogspot.com/2009/11/broken- histograms.html(例如在gnuplot中)与R.
看起来我应该使用包中的gap.plot()函数plotrix,但我只看到了使用散点图和线图的示例.我已经能够在我的情节周围的框中添加一个中断并在其中放置一个曲折,但我无法弄清楚如何重新缩放我的轴以放大休息下方的部分.
重点是能够在我的直方图中显示一个非常大的条形的最高值,同时放大我的大多数明显更短的箱子.(是的,我知道这可能会产生误导,但如果可能的话,我仍然希望这样做)
有什么建议?
更新5/10/2012 1040 EST:
如果我使用数据进行常规直方图并使用< - 将其保存到变量(hdata <- hist(...))中,我会得到以下变量的以下值:
hdata$breaks
[1] 0.00 0.20 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.30 0.31 0.32 0.33
[16] 0.34 0.35 0.36 0.37 0.38 0.39 0.40 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48
[31] 0.49 0.50 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.60 0.61 0.62 0.63
[46] 0.64 0.65 0.66 0.67 0.68 0.69 0.70 …Run Code Online (Sandbox Code Playgroud) 灵感来自Q 在曲线中找到肘部/膝盖,我开始玩耍smooth.spline().
特别是,我想要想象参数df(自由度)如何影响近似以及一阶和二阶导数.请注意,此Q 不是关于近似值,而是关于可视化中的特定问题(或边缘情况)ggplot2.
facet_grid()library(ggplot2)
ggplot(ap, aes(x, y)) +
geom_point(data = dp, alpha = 0.2) +
geom_line() +
facet_grid(deriv ~ df, scales = "free_y", labeller = label_both) +
theme_bw()
Run Code Online (Sandbox Code Playgroud)
dp是一个data.table,包含寻求近似的数据点,ap是一个data.table,带有近似数据加上导数(数据如下).
对于每一行,facet_grid()与scales = "free_y"已choosen其中显示了所有的数据的规模.不幸的是,一个面板有一些"异常值",这使得很难在其他面板中看到细节.所以,我想"放大".
coord_cartesian()ggplot(ap, aes(x, y)) +
geom_point(data = dp, alpha = 0.2) +
geom_line() +
facet_grid(deriv ~ df, scales = "free_y", labeller = label_both) +
theme_bw() +
coord_cartesian(ylim = c(-200, …Run Code Online (Sandbox Code Playgroud) 我有一个dat包含两列 1)Month和 2)的数据框 ( ) Value。我想强调一下,箱线图中的 x 轴不是连续的,方法是用 x 轴上的两条有角度的线(在有角度的线之间是空的)中断 x 轴。
示例数据和箱线图
library(ggplot2)
set.seed(321)
dat <- data.frame(matrix(ncol = 2, nrow = 18))
x <- c("Month", "Value")
colnames(dat) <- x
dat$Month <- rep(c(1,2,3,10,11,12),3)
dat$Value <- rnorm(18,20,2)
ggplot(data = dat, aes(x = factor(Month), y = Value)) +
geom_boxplot() +
labs(x = "Month") +
theme_bw() +
theme(panel.grid = element_blank(),
text = element_text(size = 16),
axis.text.x = element_text(size = 14, color = "black"),
axis.text.y = element_text(size = 14, …Run Code Online (Sandbox Code Playgroud) 当有一些极端计数时,我无法缩放条形图。当它上升得更高时,很难看到较低的计数并在绘图上比较它们。
我想打破条形图以重新缩放它(我知道重新缩放是不好的绘图,但我只想在需要时这样做)。
我在所附链接中找到的类似于下图的东西会很棒。
https://alesandrab.wordpress.com/2014/03/17/broken-column-and-bar-charts/
我有一个散点图,其中 y 轴缩放比例在某个点发生变化以绘制具有某些极值的数据。我正在尝试在 y 轴上添加某种视觉提示,指示缩放在该点发生变化。
这是一个情节的例子
library(scales)
library(ggplot2)
set.seed(104)
ggdata <- data.frame('x' = rep('a',100),
'y' = c(runif(90, 0, 20), runif(10, 90, 100)))
transformation <- trans_new(
"my_transformation",
transform = function(x) ifelse(x <= 30, x / 5, (x - 30) / 20 + 30 / 5),
inverse = function(x) ifelse(x <= 30 / 5, x * 5, (x - 30 / 5) * 20 + 30)
)
ggplot(data = ggdata) +
geom_jitter(aes(x = x, y = y)) +
scale_y_continuous(trans = transformation, breaks …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 ggplot 创建一个散点图,该散点图共享一个 X 轴,但具有一个具有两个不同比例的 Y 轴。
Y轴的底部有三个刻度,从0%到0.1%,然后是0.1%到1%,最后是10%的规则间隔。
这里的一个例子:

有没有办法使用 ggplot 在 R 中产生这样的东西?我会修改轴吗?在同一个面板上叠加多个图?或者是其他东西?
我正在绘制具有渐近尾部的剂量 - 反应曲线.我真的想在显示0的图中包括载体(对照)剂量
0通常计算为.0000000001的剂量 - 这些图中的常见做法.
我真的很喜欢下面的图像显示这个,图像是从pdf中获取的,如何使用该程序绘图:GraphPad:PRISM
旁注:我已经找到了如何使用基本图形,但不使用ggplot2.
关于matlab提出了类似但不同的SE问题:这里
我的R代码如下:
library(ggplot2)
library(scales)
ggplot(df, aes(x=dose,y=probability, group=model))+
geom_ribbon(aes(ymin=Lower,ymax=Upper,x=dose,
fill=model, col=model,alpha=2))+
#Axis log transformation:
annotation_logticks(scaled = TRUE,sides="b") +
scale_x_log10(breaks = 10^(-1:10),
labels = trans_format("log10", math_format(10^.x)))+
#Axes labels:
labs(x="dosage (log scale)", y="response",size=1)
Run Code Online (Sandbox Code Playgroud)
数据:
df<-structure(list(dose = c(1.0000001, 1.04737100217022, 1.09698590648847,1.14895111335032, 1.20337795869652, 1.26038305255123, 1.32008852886009,1.38262230716338, 1.44811836666478, 1.51671703328309, 61.5098612858473,64.4236386159454, 67.4754441930906, 70.6718165392165, 74.0196039119089,77.525978976861, 81.1984541753771, 85.0448978198478, 89.073550951683,93.2930449978201, 97.7124202636365, 102.341145301888, 107.189137199173,112.266782823381, 117.584961077656, 123.155066208544, 128.98903221828,135.099358433491, 141.499136285126, 148.202077356965, 155.222542762819,162.575573915347, 6294.98902185499, 6593.18830115198, 6905.51354792318,7232.63392192496, 7575.25028161186, 7934.09668573241, 8309.9419660568,8703.59137460616, 9115.88830891252, 9547.71611900591, 10000),probability = c(0.000541224108467882, …Run Code Online (Sandbox Code Playgroud)