我正在使用annotate()我的一个ggplot2图上覆盖文字.我正在使用该选项,parse=T因为我需要使用希腊字母rho.我想要文字说= -0.50,但是尾随的零被剪掉了,而我得到了-0.5.
这是一个例子:
library(ggplot2)
x<-rnorm(50)
y<-rnorm(50)
df<-data.frame(x,y)
ggplot(data=df,aes(x=x,y=y))+
geom_point()+
annotate(geom="text",x=1,y=1,label="rho==-0.50",parse=T)
有谁知道我怎么能得到最后的0出现?我以为我可以这样使用paste():
annotate(geom="text",x=1,y=1,label=paste("rho==-0.5","0",sep=""),parse=T)
但后来我得到了错误:
Error in parse(text = lab) : <text>:1:11: unexpected numeric constant
1: rho==-0.5 0
             ^
我希望有两行的情节标题,但这不起作用,为什么?我怎样才能让它发挥作用?
CVal<-1 
SumEpsVal<-2 
plot(1:10, main=bquote(paste("C=", .(CVal), " \n ", sum(xi), "=", .(SumEpsVal) )))
这在这里工作:
plot(1:10, main=paste("C=1", "\n", "SumXi=2"))
我猜bquote出错了...(查询?bquote)我试图改变bqoute(where-argument)中的环境,但我不知道要采取哪种环境.
BTW:
plot(1:10, main=bquote(paste("C=", .(CVal), "bla \n ", sum(xi), "=", .(SumEpsVal) )))
用"bla"让事情变得疯狂.
我为多个数据集生成了一个图.每个数据集都应该得到它自己的图例,它可能包含希腊字母,plotmath符号或sub和superscrition.我想在循环中生成图例文本.
如果只有一个图例文字,Bquote工作正常.如果我尝试添加附加的传奇文本,那么plotmath-commads会丢失,...
x <- 0:10
y1 = x * x
y2 = x * 10
plot (1,1, type="n", xlab=bquote(Omega), ylab="Y", las=1, xlim=range(x), ylim=range(y1, y2))
lines(x, y1, col=1, pch=1, type="b")
lines(x, y2, col=2, pch=2, type="b")
# generate legend texts (in a loop)
legend_texts = c(
  bquote(Omega^2)
  , bquote(Omega%*%10)
)
# Using a single bquote works fine:
#legend_texts = bquote(Omega^2)
#legend_texts = bquote(Omega%*%10)
legend(
  "topleft"
  , legend = legend_texts
  , col = c(1:2)
  , pch = c(1:2)
  , lty = 1
  )
我想添加一个Unicode字符,它有两个字母作为我在R中的情节图例的下标.字符是带有重音符号(ř)的r,两个字母是i和j.
我已经看过这个问题:带有上标的Unicode字符,并试图调整我的问题的答案.
这是我尝试过的:
plot(1,pch=NA,ylab="",xlab="",axes=F)
legend("top",legend=paste("1-","\u{0159}"),bty ="n",bg = "white",cex=2)
legend("center",legend=paste("1-","\u{0159}","\u{0069}","\u{006A}"),bty="n",bg = "white",cex=2)
legend("bottomleft",legend=expression("1-"*"\u0159"["\u0069"*"\u006A"]),bty="n",bg = "white",cex=2)
legend("bottomright", legend = quote("1-" *"\u0159"["\u0069"*"\u006A"]),bty="n",bg = "white",cex=2)
得到的图可以在下面找到

Unicode字母和下标本身都可以正常工作,但不能一起工作.使用[]的任意组合的paste()确实会返回错误,但我认为这是预期的,因为粘贴无法处理[]下标.
CRAN上的FAQ网站可能会提示我使用Windows,但我不知道如何实现这个:
3.6我在R控制台上看不到带重音的字符,例如?文本.
您需要在Rconsole中指定一个支持正在使用的编码的字体(请参阅Q5.2).这曾经是Windows早期版本中的问题,但现在很难找到没有的字体.
在Rterm中对这些字符的支持取决于运行它的环境(终端窗口和shell,包括语言环境和代码页设置)以及终端窗口使用的字体.这些通常是在传统的DOS设置上,需要更改.
是否可以将部分斜体文本标签传递给ggplot?我尝试使用expression和italiccommands(expression(paste(italic("some text")))),但这些不能传递到数据框,因为命令的结果不是原子的.设置参数fontface = "italic"也不够,因为这会使整个标签斜体化,而不仅仅是标签中的一组选定字符.例如,我想在标签中使用一些斜体字的拉丁短语(例如"体内点"中的"体内").
library(ggplot)
library(ggrepel)
df <- data.frame(V1 = c(1,2), V2 = c(2,4), V3 = c("in vivo point","another point"))
ggplot(data = df, aes(x = V1, y = V2)) + geom_point() + geom_text_repel(aes(label = V3))
我在创建结合斜体字母和变量输入的轴刻度标签时遇到问题。简单地说,我想调用变量并在每个标签下方插入诸如n = 1之类的文本。
这是一个除了斜体n之外的所有内容的示例:
require(ggplot2)
mpg$class <- as.factor(mpg$class)
counts <- rep(1:7, 1)
ggplot(mpg, aes(class, hwy)) +
  geom_boxplot() +
  scale_x_discrete(labels = paste(levels(mpg$class), "\nn = ", counts, sep = ""))
我的第一个想法是使用 Unicode 表示斜体 N,就像我过去对上标数字所做的那样。但由于某种原因,这封信太小并且在风格上与文本的其余部分不匹配。更重要的是,在我的实际用例中,斜体 n 的所有 Unicode 字符似乎都呈现不对齐,在正常和下标之间的某个位置凹陷。
ggplot(mpg, aes(class, hwy)) +
  geom_boxplot() +
  scale_x_discrete(labels = paste(levels(mpg$class), "\n\U1D45B = ", counts, sep = ""))
所以,我发现这个plotmath函数~italic(x)可以用来将字母变成斜体。paste()然而,当我将它合并到 x 轴刻度标签的行中时,出现了明显且意外的失败。请注意,该函数确实适用于xlab()
ggplot(mpg, aes(class, hwy)) +
  geom_boxplot() + xlab(~italic("n")) +
  scale_x_discrete(labels = paste(levels(mpg$class), "\n", ~italic("n"), " = ", …我想用它plotmath来创建一个包含图中前导上标的轴ggplot2.在轴标签上创建上标可以很好地工作,如下所示:
require(ggplot2)
ggplot(mtcars, aes(x=disp, y=mpg)) + 
  geom_point() +
  ylab(expression(x[y]))

但是,我想让我的轴标签读为"y(上标)x" - 逻辑上会是^yx,但不会解析:
Error: unexpected '^' in: "  
geom_point() + 
ylab(expression(^"
有没有办法在声明开头强制上标?
当我做一个地图使用ggplot2,并尝试使用斜体的组合图标题的一部分expression(),并italic()使用一个字符串,我的地图出来的期望:    
plottitle <- expression(paste('Example map with ', italic('italics')))
crimes <- data.frame(state = tolower(rownames(USArrests)), USArrests)
states_map <- map_data("state")
map <- ggplot(crimes, aes(map_id = state)) + 
  geom_map(aes(fill = Murder), 
           map = states_map) + 
  expand_limits(x = states_map$long, 
                y = states_map$lat) +
  labs(title = plottitle)
map
但是,当我尝试执行相同的操作,但使用对象而不是字符串时,该对象不会计算为所需的字符串:
word <- 'italics'
plottitle2 <- expression(paste('Example map with ', italic(word)))
map <- ggplot(crimes, aes(map_id = state)) + 
  geom_map(aes(fill = Murder), 
           map = states_map) + 
  expand_limits(x = states_map$long, 
                y = states_map$lat) + …我ggplotly在 R 中使用函数时遇到两个问题:
问题 1使用函数将绘图转换为格式时保留R 绘图数学表达式的方法有哪些?ggplot2plotlyggplotly
现在表达式被转换为[object Object]如下例所示:
library(ggplot2)
library(plotly)
qplot(mpg, wt, data = mtcars) +
    ggtitle(expression(bar(x) == sum(frac(x[i], n), i==1, n)))
ggplotly()
问题2
如何摆脱图表图例中的双标签plotly并使它们看起来像中ggplot2 graph?即如何6代替(6,6):
qplot(mpg, wt, data = mtcars, colour = as.factor(cyl), fill = as.factor(cyl))
ggplotly()
我试图在我的情节中使用女性符号♀.它非常微弱(嗯,它在我的实际图形上看起来很微弱),所以我希望能让它变得大胆.
df <- data.frame(x = c(0, 1), y = c(0, 1))
ggplot(df, aes(x, y)) + geom_point() +
   theme_bw() +
   annotate("text", x = 0.5, y = 0.7, label = "2016 ?", 
   size = 7, hjust = 0, colour = "grey50")
我尝试了以下,但似乎没有工作:
ggplot(df, aes(x, y)) + geom_point() +
   annotate("text", x = 0.5, y = 0.7, label = "2016~bold(?)", 
   size = 7, hjust = 0, parse = TRUE) 
# error message: Error in parse(text = as.character(lab)) : <text>:1:11: unexpected '<'
#1: 2016~bold(<
              ^ …