标签: ggplot2

仅设置ggplot限制的下限

是否可以仅设置连续刻度限制的下限?我想让我的所有图表都基于0,而不需要指定上限.

例如

+ scale_y_continuous(minlim=0)
Run Code Online (Sandbox Code Playgroud)

r ggplot2

74
推荐指数
3
解决办法
3万
查看次数

ggplot geom_text字体大小控件

我尝试通过执行以下操作将字体更改为10为我的条形图的标签ggplot2:

ggplot(data=file,aes(x=V1,y=V3,fill=V2)) +
    geom_bar(stat="identity",position="dodge",colour="white") + 
    geom_text(aes(label=V2),position=position_dodge(width=0.9),
                                                 hjust=1.5,colour="white") +
    theme_bw()+theme(element_text(size=10))

ggsave(filename="barplot.pdf",width=4,height=4)
Run Code Online (Sandbox Code Playgroud)

但是生成的图像具有超大字体大小的条形图标签.

然后我想到geom_text()用这个修改:

geom_text(size=10,aes(label=V2),position=position_dodge(width=0.9),
                                                   hjust=1.5,colour="white")
Run Code Online (Sandbox Code Playgroud)

标签字体更大......

我可以将内部的大小更改为geom_text3,现在看起来像字体10,类似于轴标签.

我想知道发生了什么事?确实theme(text=element_text(size=10))并不适用于标签?

为什么10英寸的尺寸geom_text()不同于theme(text=element_text())

r ggplot2

74
推荐指数
2
解决办法
12万
查看次数

如何使用ggplot2设置图例alpha

我有一个风速与方向的图表,它有一个巨大的点数,所以我使用alpha = I(1/20)除了color = month

这是一个代码示例:

library(RMySQL)
library(ggplot2)
con <- dbConnect(...)
wind <- dbGetQuery(con, "SELECT speed_w/speed_e AS ratio, dir_58 as dir, MONTHNAME(timestamp) AS month, ROUND((speed_w+speed_e)/2) AS speed FROM tablename;");

png("ratio-by-speed.png",height=400,width=1200)
qplot(wind$dir,wind$ratio,ylim=c(0.5,1.5),xlim=c(0,360),color=wind$month,alpha=I(1/30),main="West/East against direction")
dev.off()
Run Code Online (Sandbox Code Playgroud)

这会产生一个不错的图形,但我的问题是图例的alpha也是1/30,这使得它不可读.有没有办法可以强制传说为1 alpha?

这是一个例子: 示例图

r ggplot2

73
推荐指数
2
解决办法
1万
查看次数

R ggplot2:stat_count()不得与条形图中的美学错误一起使用

嗨伙计们,我在绘制条形图时遇到此错误,我无法摆脱它,我已经尝试了qplot和ggplot,但仍然是同样的错误.

以下是我的代码

 library(dplyr)
 library(ggplot2)

 #Investigate data further to build a machine learning model
 data_country = data %>%
           group_by(country) %>%
           summarise(conversion_rate = mean(converted))
  #Ist method
  qplot(country, conversion_rate, data = data_country,geom = "bar", stat ="identity", fill =   country)
  #2nd method
  ggplot(data_country)+aes(x=country,y = conversion_rate)+geom_bar()
Run Code Online (Sandbox Code Playgroud)

错误:

  stat_count() must not be used with a y aesthetic
Run Code Online (Sandbox Code Playgroud)

data_country中的数据

    country conversion_rate
    <fctr>           <dbl>
  1   China     0.001331558
  2 Germany     0.062428188
  3      UK     0.052612025
  4      US     0.037800687
Run Code Online (Sandbox Code Playgroud)

错误来自条形图而不是虚线图表.任何建议都会有很大帮助

r bar-chart ggplot2

73
推荐指数
3
解决办法
18万
查看次数

ggplot2保持未使用的级别barplot

我想在我的条形图中绘制未使用的级别(即,计数为0的级别),但是,未使用的级别被删除,我无法弄清楚如何保留它们

df <- data.frame(type=c("A", "A", "A", "B", "B"), group=rep("group1", 5))
df$type <- factor(df$type, levels=c("A","B", "C"))

ggplot(df, aes(x=group, fill=type)) + geom_bar()
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我想看到C计数为0,但它完全没有...

感谢Ulrik的帮助

编辑:

这就是我想要的

df <- data.frame(type=c("A", "A", "A", "B", "B"), group=rep("group1", 5))
df1 <- data.frame(type=c("A", "A", "A", "B", "B", "A", "A", "C", "B", "B"), group=c(rep("group1", 5),rep("group2", 5)))

df$type <- factor(df$type, levels=c("A","B", "C"))
df1$type <- factor(df1$type, levels=c("A","B", "C"))
df <- data.frame(table(df))

df1 <- data.frame(table(df1))

ggplot(df, aes(x=group, y=Freq, fill=type)) + geom_bar(position="dodge")
ggplot(df1, aes(x=group, y=Freq, fill=type)) + geom_bar(position="dodge")
Run Code Online (Sandbox Code Playgroud)

猜测解决方案是使用table()计算频率然后绘图

r legend levels ggplot2

72
推荐指数
3
解决办法
3万
查看次数

控制点边框厚度在ggplot中

当使用ggplot时,我可以设置shape为21-25来获取具有internal(fill)和border(col)颜色的独立设置的形状,如下所示:

df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(fill=id, size=id), colour="black", shape=21)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,我无法弄清楚如何控制形状边框的厚度,无论是绝对设置还是美学映射.我注意到,如果我设置一个lwd值,它会覆盖size美学:

ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(fill=id, size=id), colour="black", shape=21, lwd=2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何控制边框厚度?

r border point thickness ggplot2

71
推荐指数
2
解决办法
4万
查看次数

将自定义图像添加到geom_polygon会填写ggplot

学生问我是否可以使用R重新创建类似下面的图:

在此输入图像描述 这是从 这篇论文....

这种东西不是我的专长,但使用下面的代码我能够创建95%CI省略号并用它们绘制geom_polygon().我使用rphylopic包装从图像库中抓取的图像填充图像.

#example data/ellipses
set.seed(101)
n <- 1000
x1 <- rnorm(n, mean=2)
y1 <- 1.75 + 0.4*x1 + rnorm(n)
df <- data.frame(x=x1, y=y1, group="A")
x2 <- rnorm(n, mean=8)
y2 <- 0.7*x2 + 2 + rnorm(n)
df <- rbind(df, data.frame(x=x2, y=y2, group="B"))
x3 <- rnorm(n, mean=6)
y3 <- x3 - 5 - rnorm(n)
df <- rbind(df, data.frame(x=x3, y=y3, group="C"))


#calculating ellipses
library(ellipse)
df_ell <- data.frame()
for(g in levels(df$group)){
  df_ell <- rbind(df_ell, cbind(as.data.frame(with(df[df$group==g,], ellipse(cor(x, y), 
                                                                             scale=c(sd(x),sd(y)), …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

70
推荐指数
1
解决办法
2857
查看次数

你如何专门订购ggplot2 x轴而不是字母顺序?

我想一个使heatmap使用ggplot2使用geom_tiles此功能,下面是我的代码:

p<-ggplot(data,aes(Treatment,organisms))+geom_tile(aes(fill=S))+
  scale_fill_gradient(low = "black",high = "red") + 
  scale_x_discrete(expand = c(0, 0)) + 
  scale_y_discrete(expand = c(0, 0)) + 
  theme(legend.position = "right", 
    axis.ticks = element_blank(), 
    axis.text.x = element_text(size = base_size, angle = 90, hjust = 0, colour = "black"),
    axis.text.y = element_text(size = base_size, hjust = 1, colour = "black")).
Run Code Online (Sandbox Code Playgroud)

数据是我的data.csv文件
我的X轴是治疗的类型
我的Y轴是有机体的类型

我对命令和编程不太熟悉,而且我对此比较陌生.我只是想能够指定x轴上标签的顺序.在这种情况下,我试图指定"治疗"的顺序.默认情况下,它按字母顺序排序.如何覆盖此数据/保持数据的顺序与原始csv文件中的顺序相同?

我试过这个命令

scale_x_discrete(limits=c("Y","X","Z"))
Run Code Online (Sandbox Code Playgroud)

其中x,y和z是我的治疗条件顺序.然而,它不能很好地工作,并给我缺少热箱.

r ggplot2 r-faq

69
推荐指数
2
解决办法
12万
查看次数

在R图窗口中组合基础和ggplot图形

我想生成一个具有base和ggplot图形组合的图形.以下代码使用R的基本绘图函数显示我的图:

t <- c(1:(24*14)) 
P <- 24 
A <- 10 
y <- A*sin(2*pi*t/P)+20

par(mfrow=c(2,2))
plot(y,type = "l",xlab = "Time (hours)",ylab = "Amplitude",main = "Time series")
acf(y,main = "Autocorrelation",xlab = "Lag (hours)", ylab = "ACF")
spectrum(y,method = "ar",main = "Spectral density function", 
         xlab = "Frequency (cycles per hour)",ylab = "Spectrum")
require(biwavelet)
t1 <- cbind(t, y)
wt.t1=wt(t1)
plot(wt.t1, plot.cb=FALSE, plot.phase=FALSE,main = "Continuous wavelet transform",
     ylab = "Period (hours)",xlab = "Time (hours)")
Run Code Online (Sandbox Code Playgroud)

哪个生成 在此输入图像描述

这些面板中的大多数看起来足以让我包含在我的报告中.但是,需要改进显示自相关的图.使用ggplot看起来好多了:

require(ggplot2)
acz <- acf(y, plot=F)
acd <- data.frame(lag=acz$lag, acf=acz$acf) …
Run Code Online (Sandbox Code Playgroud)

plot r base ggplot2 biwavelet

69
推荐指数
4
解决办法
2万
查看次数

错误:ggplot2和data.table的包或命名空间加载失败

我无法打开安装ggp​​lot2和data.table包.它给我以下错误(ggplot2的例子)

> library(ggplot2)
Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : 
  there is no package called ‘Rcpp’
Error: package or namespace load failed for ‘ggplot2’
Run Code Online (Sandbox Code Playgroud)

在我关闭R会话之前,我能够正常使用这两个包.现在每次我尝试运行它时都会显示此错误.

我也尝试删除并重新安装它,但没有成功.

remove.packages(c("ggplot2", "data.table"))
install.packages('ggplot2', dep = TRUE)
install.packages('data.table', dep = TRUE)
Run Code Online (Sandbox Code Playgroud)

我不确定是什么问题

r ggplot2 data.table

69
推荐指数
6
解决办法
18万
查看次数

标签 统计

ggplot2 ×10

r ×10

bar-chart ×1

base ×1

biwavelet ×1

border ×1

data.table ×1

legend ×1

levels ×1

plot ×1

point ×1

r-faq ×1

thickness ×1