我想使用LaTeX
或与R
的组合将base/lattice
排版添加到ggplot2
中的图表元素(例如:标题,轴标签,注释等) LaTeX
。
问题:
Python matplotlib
使用这些软件包进入图表,如果有,它是如何完成的? 例如,LaTeX
通过此处讨论的text.usetex
软件包编译R
:http://www.scipy.org/Cookbook/Matplotlib/UsingTex
是否有类似的过程可以在{{1}}?
中生成此类图表答案 0 :(得分:45)
以下是使用ggplot2
的示例:
q <- qplot(cty, hwy, data = mpg, colour = displ)
q + xlab(expression(beta +frac(miles, gallon)))
答案 1 :(得分:33)
答案 2 :(得分:26)
This script包含一个函数latex2exp
,用于将LaTeX公式大致转换为R&amp; plotmath表达式。您可以在任何可以输入数学注释的地方使用它,例如轴标签,图例标签和一般文本。
例如:
x <- seq(0, 4, length.out=100)
alpha <- 1:5
plot(x, xlim=c(0, 4), ylim=c(0, 10), xlab='x', ylab=latex2exp('\\alpha
x^\\alpha\\text{, where }\\alpha \\in \\text{1:5}'), type='n')
for (a in alpha)
lines(x, a*x^a, col=a)
legend('topleft', legend=latex2exp(sprintf("\\alpha = %d", alpha)), lwd=1, col=alpha)
生成this plot。
答案 3 :(得分:15)
您可以从R生成tikz代码: http://r-forge.r-project.org/projects/tikzdevice/
答案 4 :(得分:5)
这是我自己的实验室报告中的内容。
tickzDevice
导出tikz
LaTeX
张图片
请注意,在某些情况下,"\\"
变为"\"
而"$"
变为"$\"
,如以下R代码所示:"$z\\frac{a}{b}$" -> "$\z\frac{a}{b}$\"
xtable也将表格导出到乳胶代码
代码:
library(reshape2)
library(plyr)
library(ggplot2)
library(systemfit)
library(xtable)
require(graphics)
require(tikzDevice)
setwd("~/DataFolder/")
Lab5p9 <- read.csv (file="~/DataFolder/Lab5part9.csv", comment.char="#")
AR <- subset(Lab5p9,Region == "Forward.Active")
# make sure the data names aren't already in latex format, it interferes with the ggplot ~ # tikzDecice combo
colnames(AR) <- c("$V_{BB}[V]$", "$V_{RB}[V]$" , "$V_{RC}[V]$" , "$I_B[\\mu A]$" , "IC" , "$V_{BE}[V]$" , "$V_{CE}[V]$" , "beta" , "$I_E[mA]$")
# make sure the working directory is where you want your tikz file to go
setwd("~/TexImageFolder/")
# export plot as a .tex file in the tikz format
tikz('betaplot.tex', width = 6,height = 3.5,pointsize = 12) #define plot name size and font size
#define plot margin widths
par(mar=c(3,5,3,5)) # The syntax is mar=c(bottom, left, top, right).
ggplot(AR, aes(x=IC, y=beta)) + # define data set
geom_point(colour="#000000",size=1.5) + # use points
geom_smooth(method=loess,span=2) + # use smooth
theme_bw() + # no grey background
xlab("$I_C[mA]$") + # x axis label in latex format
ylab ("$\\beta$") + # y axis label in latex format
theme(axis.title.y=element_text(angle=0)) + # rotate y axis label
theme(axis.title.x=element_text(vjust=-0.5)) + # adjust x axis label down
theme(axis.title.y=element_text(hjust=-0.5)) + # adjust y axis lable left
theme(panel.grid.major=element_line(colour="grey80", size=0.5)) +# major grid color
theme(panel.grid.minor=element_line(colour="grey95", size=0.4)) +# minor grid color
scale_x_continuous(minor_breaks=seq(0,9.5,by=0.5)) +# adjust x minor grid spacing
scale_y_continuous(minor_breaks=seq(170,185,by=0.5)) + # adjust y minor grid spacing
theme(panel.border=element_rect(colour="black",size=.75))# border color and size
dev.off() # export file and exit tikzDevice function
答案 5 :(得分:4)
这是一个很酷的功能,可让您使用plotmath功能,但表达式存储为字符模式的对象。这允许您使用粘贴或正则表达式函数以编程方式操作它们。我不使用ggplot,但它也应该在那里工作:
express <- function(char.expressions){
return(parse(text=paste(char.expressions,collapse=";")))
}
par(mar=c(6,6,1,1))
plot(0,0,xlim=sym(),ylim=sym(),xaxt="n",yaxt="n",mgp=c(4,0.2,0),
xlab="axis(1,(-9:9)/10,tick.labels,las=2,cex.axis=0.8)",
ylab="axis(2,(-9:9)/10,express(tick.labels),las=1,cex.axis=0.8)")
tick.labels <- paste("x >=",(-9:9)/10)
# this is what you get if you just use tick.labels the regular way:
axis(1,(-9:9)/10,tick.labels,las=2,cex.axis=0.8)
# but if you express() them... voila!
axis(2,(-9:9)/10,express(tick.labels),las=1,cex.axis=0.8)
答案 6 :(得分:2)
几年前我通过输出.fig格式而不是直接输出到.pdf来做到这一点;你写的标题包括乳胶代码,并使用fig2ps或fig2pdf来创建最终的图形文件。我不得不做的设置打破了R 2.5;如果我不得不再次这样做,我会考虑使用tikz,但无论如何我都将此作为另一种可能的选择。
关于我如何使用Sweave进行操作的说明如下:http://www.stat.umn.edu/~arendahl/computing
答案 7 :(得分:0)
我只是有一个解决方法。可以先生成一个eps文件,然后使用工具eps2pgf将其转换回pgf。见http://www.texample.net/tikz/examples/eps2pgf/
答案 8 :(得分:0)
h <- rnorm(mean = 5, sd = 1, n = 1000)
hist(h, main = expression(paste("Sampled values, ", mu, "=5, ", sigma,
"=1")))
摘自https://stats.idre.ucla.edu/r/codefragments/greek_letters/
的帮助文章