varias superponer modificar los leyenda gráficos graficas ggplot etiquetas escala ejes como cambiar r ggplot2

modificar - superponer graficas en r ggplot



utf-8 en las etiquetas de eje ggplot (1)

Supongo que esto se ha resuelto en la versión más reciente de ggplot .

library(tidyverse) library(ggrepel) russian_names<-structure(list(rowname = c("Мазда RX4", "Мазда RX4 Вагон", "Датсун 710", "Хорнет 4 Drive", "Хорнет Sportabout", "Валиант", "Дастер 360", "Мерседес 240D", "Мерседес 230", "Мерседес 280", "Мерседес 280C", "Мерседес 450SE", "Мерседес 450SL", "Мерседес 450SLC", "Кадиллак Флитвуд", "Линкольн Континенталь", "Крайслер Империал", "Фиат 128", "Хонда Сивик", "Тойота Королла", "Тойота Корона", "Додж Чаленджер", "ЭйЭмСи Джавелин", "Камаро Z28", "Понтиак Файербёрд", "Фиат X1-9", "Порш 914-2", "Лотус Европа", "Форд Пантера L", "Феррари Дино", "Мазерати Бора", "Вольво 142E" )), row.names = c(NA, -32L), class = "data.frame", .Names = "rowname") mtcars %>% bind_cols(russian_names) %>% ggplot(mapping=aes(x=mpg, y=disp))+ geom_point()+ geom_label_repel(aes(label=russian_names), size=2)+ labs(x="Миль на галлон", y="Замещение, куб.дюйм")

Resultados en una trama adecuada:

Estoy luchando para que ggplot muestre las etiquetas de los ejes correctamente cuando se encuentra en un conjunto de caracteres no estándar [ruso]. cuando se usan tales cadenas, ggplot rotula ejes, por ejemplo,

/ U + 0441 U + 043D U + 0433

Ggplot obtiene la codificación correcta cuando guardo los nombres como una variable separada y los geom_text() como etiquetas usando geom_text()

la conversión del formato del marco de datos tampoco ayuda mucho: db$variable=sapply(db$variable,function(row) iconv(row,to=''UTF-8'')) genera caracteres codificados, probablemente porque los datos son ya codificado como UTF-8 en el marco de datos

Puedo hacer que esto funcione utilizando un eje personalizado utilizando scale_x_discrete( labels=names) pero esto es un poco difícil de manejar, especialmente cuando a los datos les faltan valores. ¿Hay alguna forma de hacer que ggplot muestre estos caracteres correctamente en primer lugar?

editar

Después de algunos rascarse la cabeza parece

Sys.setlocale("LC_CTYPE","russian")

resolverá el problema Sin embargo, todavía no entiendo por qué R / ggplot es inconsistente en qué circunstancias aceptará el código UTF8. En el ejemplo anterior, el problema se limitaba a las etiquetas de eje. ¿Esto se debe a que, para las etiquetas de eje, la cadena se recuperó de una tabla de datos, que de alguna manera trata con la codificación de manera diferente si las mismas líneas se almacenan en una cadena o matriz?