是否可以仅设置连续刻度限制的下限?我想让我的所有图表都基于0,而不需要指定上限.
例如
+ scale_y_continuous(minlim=0)
Run Code Online (Sandbox Code Playgroud) 我尝试通过执行以下操作将字体更改为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())?
我有一个风速与方向的图表,它有一个巨大的点数,所以我使用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?
这是一个例子:

嗨伙计们,我在绘制条形图时遇到此错误,我无法摆脱它,我已经尝试了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)
错误来自条形图而不是虚线图表.任何建议都会有很大帮助
我想在我的条形图中绘制未使用的级别(即,计数为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()计算频率然后绘图
当使用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重新创建类似下面的图:
这是从 这篇论文....
这种东西不是我的专长,但使用下面的代码我能够创建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) 我想一个使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是我的治疗条件顺序.然而,它不能很好地工作,并给我缺少热箱.
我想生成一个具有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) 我无法打开安装ggplot2和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)
我不确定是什么问题