Staram się, aby ggplot poprawnie wyświetlał etykiety osi, gdy są w niestandardowym zestawie znaków [rosyjski]. podczas używania takich łańcuchów, ggplot oznacza osie np.utf-8 w etykietach osi ggplot
\ U + 0441 U + 043D U + 0433
ggplot dostaje prawo kodowania kiedy zapisać nazwiska jako oddzielna zmienna i wykreślić je jako etykiet wykorzystujących geom_text()
konwersji formatowanie ramki danych również niewiele pomaga: db$variable=sapply(db$variable,function(row) iconv(row,to='UTF-8'))
powoduje zakodowanie znaków, prawdopodobnie dlatego, że dane są już zakodowane jako UTF-8 w ramce danych
Mogę to zrobić za pomocą niestandardowej osi przy użyciu scale_x_discrete(labels=names)
, ale jest to trochę nieporęczne, szczególnie gdy dane mają brakujące wartości. Czy jest jakiś sposób, aby uzyskać ggplot, aby wyświetlać te znaki poprawnie w pierwszej kolejności?
edit
Po pewnym zarysowania głowy wydaje
Sys.setlocale("LC_CTYPE","russian")
rozwiąże ten problem. Wciąż nie rozumiem, dlaczego R/ggplot jest niespójny w jakich okolicznościach będzie akceptował kod UTF8. W powyższym przykładzie problem ograniczono do etykiet osi. Czy dzieje się tak dlatego, że w przypadku etykiet osi ciąg był pobierany z tabeli danych, która w jakiś sposób traktuje kodowanie inaczej, jeśli te same linie są przechowywane w łańcuchu lub macierzy?
Brzmi jak odpowiedział na to pytanie. Czy zaproponujesz rozwiązanie 'Sys.setlocale (" LC_CTYPE "," russian ")', a następnie otworzysz nowe pytanie dotyczące niespójności ggplot? To również sprawi, że twoje pytanie ggplot będzie bardziej atrakcyjne :) – Rilcon42