LINUX.ORG.RU

R+LaTeX: Проблема с кодировкой осей графика.

 , ,


1

2

Возникла проблема с названием осей графика.

 
<<echo=FALSE,size='normalsize',fig.width=5, fig.height=4,results = "asis">>=
result <- read.table(file='results/mydata',sep = ";",nrows = 5,header =TRUE)
p <- ggplot(data = result, aes(y = n, x=r)) +
geom_smooth(method = "lm", se=FALSE, color="orange", formula = y ~ x) +
stat_poly_eq(formula = y ~ x, 
          aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")), 
          parse = TRUE) +         
geom_point() + xlab( expression('r'^-1~'м'))+ ylab( expression('n'~'усл.едн'))
p

Когда в названии осей английские буквы все нормально работает, но если ввести российские буквы возникает ошибка:

## Warning in grid.Call(L_stringMetric,
as.graphicsAnnot(x$label)): font metrics unknown for
Unicode character U+043c

Как видно проблема в том, что текст закодирован в U+043c. Я пытался использовать options(«encoding» = «UTF-8»), не помогло. Что делать?


текст закодирован в U+043c

в смысле?

mos ★★☆☆☆
()
Ответ на: комментарий от ados

Шрифтов уникодных нет походу.

Как их установить?

bpm
() автор топика

Предлагаю попробовать следующее:

  • Установить пакет Cairo;
  • Выбрать шрифт для отображения подписей при помощи функции CairoFonts
  • Выводить график, используя CairoPNG, CairoPDF и т.п.

У меня на линуксе при использовании Cairo не возникало проблем с кириллицей и с встраиванием шрифтов в PDF.

Interlace ★★
()
Ответ на: комментарий от Interlace

cairoDevice не забудь. Так надежнее будет.

// это ТС в дополнение.

bookman900 ★★★★★
()
Последнее исправление: bookman900 (всего исправлений: 1)
Ответ на: комментарий от bpm

Ещё раз посмотрел файл, у меня еще в самом начале стоит %\SweaveUTF8. Смотри пункт 3.7 Руководства пользователя Sweave.

pxrdsg
()
Ответ на: комментарий от bpm

У меня работает вот так:

<<dev="cairo_pdf",fig=FALSE,echo=FALSE>>=

cairo_pdf(
          filename =  "figure-barplot.pdf",
          pointsize = 12, 
          family = "DejaVuSerif", 
          bg = "white",
          antialias = "subpixel"
          )

bplt  <- boxplot(obgar ~ data.time$time,
               xlab="Продолжительность активации, мин", 
               ylab="Степень обгара, %"
                 )
@

Ну и хотелось бы увидеть используемую OS, на разных системах есть особенности.

einhander ★★★★★
()
Последнее исправление: einhander (всего исправлений: 1)

В руководстве ещё написано, что можно использовать параметр pdf.encoding, только я не проверял.

pxrdsg
()
Ответ на: комментарий от bpm

в RStudio есть в меню-баре Tools — Install Packages, далее выбираете from archive .tgz и путь до архива. Он сам поставит.

bookman900 ★★★★★
()
Ответ на: комментарий от pxrdsg

Я попытался запустить код взят из руководства (пункт 3.2)

\documentclass[a4paper ]{ article}
\title{Sweave  Example  1}
\author{Friedrich  Leisch}
\begin{document}
\maketitle
In this  example  we embed  parts of the  examples  from  the
\texttt{kruskal.test} help  page  into a \LaTeX {}  document:
<<>>=
data(airquality , package =" datasets ")
library ("stats ")
kruskal.test(Ozone ~ Month , data = airquality)
@
which  shows  that  the  location  parameter  of the  Ozone
distribution  varies  significantly  from  month to month. Finally  we
include a boxplot  of the  data:
\begin{center}
<<fig=TRUE ,echo=FALSE >>=
library (" graphics ")
boxplot(Ozone ~ Month , data = airquality)
@
\end{center}
\end{document}
После запуска всплывает окно на котором пишет:
It seems you  are using the Sweave-specific syntax in  line(s)
17; you may need Sweave2knitr("название файла") to convert it to knitr
Я нажимаю «OK». После этого компиляция завершается с ошибками:
## Error in find.package(package, lib.loc, verbose = verbose):
is no package called ’ datasets ’
## Error in library("stats "):
there is no package called ’stats ’
## Error in library(" graphics "): there is no package called ’
graphics ’
Хотя у меня эти пакеты установлены.

Ну и хотелось бы увидеть используемую OS,

Я использую Lubuntu

bpm
() автор топика
Ответ на: комментарий от bpm

У меня всё нормально

> rnwfile <- system.file("Sweave", "example-1.Rnw", package = "utils")
> Sweave(rnwfile)
Writing to file example-1.tex
Processing code chunks with options ...
 1 : echo keep.source term verbatim (example-1.Rnw:13)
 2 : echo keep.source (label = boxp, example-1.Rnw:22)
 3 : keep.source term verbatim pdf  (example-1.Rnw:27)

You can now run (pdf)latex on ‘example-1.tex’
> tools::texi2pdf("example-1.tex")
example-1.pdf создаётся.

У меня Manjaro. Может в Lubuntu чего поломали?

pxrdsg
()
Ответ на: комментарий от Evgueni

Наивный вопрос: пакет cm-super установлен? Вряд ли в этом дело, просто выстрел вслепую.

Я его не устанавливал.

bpm
() автор топика
Ответ на: комментарий от pxrdsg

Может в Lubuntu чего поломали?

В Lubuntu все нормально. Я попробовал в консоли запустить команды.

rnwfile <- system.file("Sweave", "название файла.Rnw", package = "utils")
Sweave(rnwfile)
После команды Sweave(rnwfile) получаю ошибку:
Error in SweaveReadFile(file, syntax, encoding = encoding) : 
  no Sweave file with name ‘’ found

bpm
() автор топика
Ответ на: комментарий от bpm

Файл Sweave с таким именем не найден??? Такого быть не должно.

file example-1.Rnw
example-1.Rnw: LaTeX 2e document, ASCII text
Файл либо есть, либо его нет.

pxrdsg
()
Ответ на: комментарий от pxrdsg

Все заработало.

> rnwfile <- system.file("Sweave", "example-1.Rnw", package = "utils")
> Sweave(rnwfile)
Writing to file example-1.tex
Processing code chunks with options ...
 1 : echo keep.source term verbatim (example-1.Rnw:13)
 2 : echo keep.source (label = boxp, example-1.Rnw:22)
 3 : keep.source term verbatim pdf  (example-1.Rnw:27)

You can now run (pdf)latex on ‘example-1.tex’
> tools::texi2pdf("example-1.tex")
Теперь как сделать, чтобы файл компилировался с помощью Compile PDF в RStudio?

bpm
() автор топика
Ответ на: комментарий от bpm

Сам хочу знать почему Rstudio этот файл не переваривает. С другими же нормально работает. Пока идей нет (

pxrdsg
()
Ответ на: комментарий от pxrdsg

Заработало, но при каждой компиляции всплывает окно:

It seems you  are using the Sweave-specific syntax in  line(s)
17; you may need Sweave2knitr("название файла") to convert it to knitr
Как его убрать?

bpm
() автор топика
Ответ на: комментарий от bpm

Ну как бы установи (там как раз кириллические Computer Modern шрифты в Type1 формате лежат), да и вообще texlive-full до кучи, чтобы на душе спокойнее было.

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Не знаю за что она их там принимает, но факт налицо. Добавляем один пробел перед/после слова в кавычках и всё (

pxrdsg
()
Ответ на: комментарий от Evgueni

Ну, сам Sweave нормально с таким работает. У него в примерах так и написано с пробелами.

pxrdsg
()
Ответ на: комментарий от Evgueni

Соврал. В руководстве пробелов не было. Но работает же в терминале без проблем.

pxrdsg
()
Ответ на: комментарий от bpm

У меня она не выдаёт предупреждений. Сразу открывает PDF.

pxrdsg
()
Ответ на: комментарий от pxrdsg

Я пытался запустить другой файл с помощью команды rnwfile <- system.file("Sweave", "название файла", package = "utils"), но ничего не получилось. В чем проблема?

bpm
() автор топика
Ответ на: комментарий от pxrdsg
Error in SweaveReadFile(file, syntax, encoding = encoding) : 
  no Sweave file with name ‘’ found

Странно. Я проверил, файл существует. Возможно проблема связана с особенностями system.file() .

bpm
() автор топика
Ответ на: комментарий от bpm

У меня все заработало(код внизу).

<<dev="cairo_pdf",echo=FALSE>>=

cairo_pdf(
          filename =  "figure-barplot.pdf",
          pointsize = 12, 
          family = "DejaVuSerif", 
          bg = "white",
          antialias = "subpixel"
          )



x <- seq(0,2*pi,0.1)
y <- sin(x)
num <- data.frame(x,y)
p <- ggplot(num,aes(x=x,y=y))+ geom_point() +xlab('кек') +ylab('лол') 
p
@
в данном случае график находится в pdf файле. Мне нужно получить jpg формат. Как это сделать?

bpm
() автор топика
Ответ на: комментарий от TeopeTuK

Векторные графики в PDF выглядят лучше.

К сожалению, кроме графика мне нужен текст и таблицы. Данный код создает только график. График в jpg я могу вставить в любой документ.

bpm
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.