Улучшение качества графика с выбранным выводом постскриптума

Я все еще изучаю Sweave и R. Ниже приведен пример кода, который считывает файл данных и отображает его. Я выбираю вариант postscript, так как мне нравится, что в итоге получается файл EPS. Есть ряд вещей, которые я хотел бы улучшить в сюжете. Вот мой код с моими собственными комментариями для моего собственного обучения:

\documentclass[a4paper,12pt]{article}
\usepackage{Sweave}  %%%%%%
\SweaveOpts{eps=TRUE}

\begin{document}

<<echo=FALSE, results=hide>>=
test.frame<-data.frame(ratio= c(0.0, 144.321, 159.407, 178.413, 202.557), value= c(0, 0.84, 0.8925, 0.945, 0.9975))
@


<<echo=FALSE,results=hide,eval=TRUE>>=
postscript('doudou.eps',
               width=7, height=6,
               colormodel="cmyk",
               family = "ComputerModern",
               horizontal = FALSE,
               onefile=FALSE,
               paper = "special",
               encoding = "TeXtext.enc",
               pagecentre=FALSE)

with(test.frame,plot(ratio, value, ylab= "Hello",
                                   xlab="Wonderful",
                                   type="o",        # line and markers
                                   bty="o",         # box around graph
                                   lty="solid",     # solid line or put 1
                                   lwd=3,            # line width
                                   pch=1,            # or enclose symbol in quotes
                                   cex=3,             # size of markers
                                   cex.lab=2,        # label size
                                   cex.axis=1.5,    # axis annot size problem if big
                                   cex.main=2,          # main title size
                                   xaxp=c(0, 200, 4),  #c(x1, x2, n)
                                   col=2,              # plotting color
                                   xlim=c(0,200),
                                   yaxt = "n",         #suppresses axis
                                   main=" My curve"))

axis(2,seq(0,1, by=0.5), las=2,cex=3,cex.lab=2,cex.axis=1.5,cex.main=2)

dev.off()
@

\begin{figure}[htbp]
\begin{center}
\includegraphics[width=0.8\textwidth]{doudou.eps}
\end{center}
\end{figure}


\end{document}

Некоторые вещи, которые я хотел бы узнать больше об улучшении:

  1. У меня есть коробочная рамка вокруг сюжета. Как контролировать ширину его линии?

  2. Я использую cex.axis=1.5для размера аннотации оси. если я изменю его на cex.axis=3, тогда значения по оси x станут большими и перекроются с делениями. Есть ли способ разместить значения по оси x немного ниже, подальше от графика?

  3. Y-метка Hello усекается в верхней части буквы H на графике. Как это исправить?

  4. Как переместить метку x Wonderful или метку y Hello дальше от графика?

  5. Если мы посмотрим на построенную кривую, оси не начинаются с (0,0), хотя начальные значения для набора данных равны (0,0). Как управлять осями, чтобы они начинались с (0,0)?

Большое спасибо...


person yCalleecharan    schedule 03.12.2011    source источник
comment
Насколько я могу судить, ни один из ваших вопросов не связан с SWeave. Поскольку загрузка примера кода в SWeave намного сложнее, чем просто в R, отредактируйте свой вопрос, удалив все материалы SWeave. Тогда я посмотрю.   -  person Andrie    schedule 03.12.2011
comment
@ Андри В будущем я постараюсь разделить запросы R и Sweave. На данный момент я получил ответ на этот пост.   -  person yCalleecharan    schedule 04.12.2011


Ответы (1)


«У меня есть рамка вокруг графика. Как контролировать толщину линии?»

 box(lwd=3)

«Я использую cex.axis=1.5 для размера аннотации оси. Если я изменю его на cex.axis=3 , тогда значения на оси X станут большими и перекроются с отметками. Есть ли способ тогда поместите значения по оси X немного ниже и дальше от графика?»

par(mgp=c(3,1.5,0) )  # second element is number of lines below the box for the labels

«Y-метка Hello обрезается в верхней части буквы H на графике. Как это исправить?»

# use par() to increase left margins

«Как отодвинуть метку x Wonderful или y Hello подальше от сюжета?»

par( mgp=c(4,1.5,0) ) # First element in mgp vector

«Если мы посмотрим на построенную кривую, оси не начинаются с (0,0), хотя начальные значения (0,0) для набора данных. Как управлять осями, чтобы они начинались с (0,0) ?"

 ..., xaxs="i", yaxs="i", ... # can be done in `par` or in the plot call

Итак, код R для рисунка ниже: Итак, код R для рисунка ниже:

postscript('doudou.eps',
               width=7, height=6,
               colormodel="cmyk",
               family = "ComputerModern",
               horizontal = FALSE,
               onefile=FALSE,
               paper = "special",
               encoding = "TeXtext.enc",
               pagecentre=FALSE)
par( mgp=c(4,1.5,0), mai=c(1.5, 1.5, 1.5, .75) )  # using inches as the spacing unit
with(test.frame, plot(ratio, value, ylab= "Hello", 
                            xaxs="i", yaxs="i",
                                   xlab="Wonderful",
                                   type="o",        # line and markers
                                   bty="o",         # box around graph
                                   lty="solid",     # solid line or put 1
                                   lwd=3,            # line width
                                   pch=1,            # or enclose symbol in quotes
                                   cex=3,             # size of markers
                                   cex.lab=2,        # label size
                                   cex.axis=3,    # axis annot size problem if big
                                   cex.main=2,          # main title size
                                   xaxp=c(0, 200, 4),  #c(x1, x2, n)
                                   col=2,              # plotting color
                                   xlim=c(0,200),
                                   yaxt = "n",         #suppresses axis
                                   main=" My curve"))

axis(2,seq(0,1, by=0.5), las=2,cex=3,cex.lab=2,cex.axis=1.4, cex.main=2)
box(lwd=3)
dev.off()

Не красиво, но иллюстрирует функции управления. В основном вам нужно проводить больше времени на странице справки (par).

person IRTFM    schedule 03.12.2011
comment
+1 за тщательность! В строке кода над графиком у вас есть axs = "i", который должен быть xaxs = "i". - person Gregor Thomas; 04.12.2011