自从我更新到ggplot版本2.0.0后,我无法重新创建一个情节:看起来我不能像以前那样减小点大小,这是一个有很多点的情节中的问题.在下面的例子中,plot1和plot2之间的点大小存在合理的差异,plot3中的点大小至少略小一点,但在plot3和plot4之间,点大小没有差异:
df <- data.frame(x=1:10, y=runif(10))
pl <- ggplot(df) +
geom_point(aes(x,y), size=1)
ggsave("plot1.png", plot=pl, width=14, height=7, units="cm", dpi=1200 )
pl <- ggplot(df) +
geom_point(aes(x,y), size=0.1)
ggsave("plot2.png", plot=pl, width=14, height=7, units="cm", dpi=1200 )
pl <- ggplot(df) +
geom_point(aes(x,y), size=0.01)
ggsave("plot3.png", plot=pl, width=14, height=7, units="cm", dpi=1200 )
pl <- ggplot(df) +
geom_point(aes(x,y), size=0.001)
ggsave("plot4.png", plot=pl, width=14, height=7, units="cm", dpi=1200 )
Run Code Online (Sandbox Code Playgroud)
在之前版本的ggplot2中,我使用了0.25的点大小,它看起来比现在小,这就是我尝试使用新的ggplot2版本进一步减少它的原因.我是否错过了新版本代码的更改?在文档中找不到任何内容......
我正在尝试可视化重尾栅格数据,并且我想要颜色到值范围的非线性映射。有几个类似的问题,但它们并没有真正解决我的具体问题(请参阅下面的链接)。
library(ggplot2)
library(scales)
set.seed(42)
dat <- data.frame(
x = floor(runif(10000, min=1, max=100)),
y = floor(runif(10000, min=2, max=1000)),
z = rlnorm(10000, 1, 1) )
# colors for the colour scale:
col.pal <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan", "#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000"))
fill.colors <- col.pal(64)
Run Code Online (Sandbox Code Playgroud)
如果不以某种方式进行转换,数据将如下所示:
ggplot(dat, aes(x = x, y = y, fill = z)) +
geom_tile(width=2, height=30) +
scale_fill_gradientn(colours=fill.colors)
Run Code Online (Sandbox Code Playgroud)
我的问题是与这个或这个
相关的后续问题
,这里给出的解决方案实际上产生了我想要的图,除了图例:
qn <- rescale(quantile(dat$z, probs=seq(0, 1, length.out=length(fill.colors))))
ggplot(dat, aes(x = x, y = y, fill …Run Code Online (Sandbox Code Playgroud) 有没有办法geom_spoke()让箭头指向给定数据的方向?如果我有带有位置 (x,y) 和角度的数据,那么使用 似乎是理想的选择geom_spoke,但我希望能够选择箭头应指向的方向(远离坐标或指向它们;我想要后者)。
在此示例中,我添加了geom_point()内容以说明我的数据的位置;半径是随机选择的,所以我想要箭头现在所在的位置(当然,而不是点):
set.seed(1)
df <- expand.grid(x = 1:10, y=1:10)
df$angle <- runif(100, 0, 2*pi)
ggplot(df, aes(x, y)) +
geom_point() +
coord_equal() +
geom_spoke(aes(angle = angle), radius = 0.7, arrow=arrow(length = unit(0.2,"cm")))
Run Code Online (Sandbox Code Playgroud)