R ggplot меняет метки оси без изменения масштаба - PullRequest
2 голосов
/ 23 апреля 2020

Я использую ggplot для построения geom_raster, где ось Y является результатом журнала:

enter image description here

Я хотел бы оставить ось как есть, но измените метки на exp (y_coord), чтобы сделать значения более явными для других пользователей. Если я непосредственно преобразую y_coord, то растр больше не будет работать, потому что между каждым значением y будет большой пробел. Это вообще возможно?

Заранее спасибо!

Вот воспроизводимый код:

testy <- structure(list(x_coord = c(0, 11.1111111111111, 22.2222222222222, 
                           33.3333333333333, 44.4444444444444, 55.5555555555556, 66.6666666666667, 
                           77.7777777777778, 88.8888888888889, 100, 0, 11.1111111111111, 
                           22.2222222222222, 33.3333333333333, 44.4444444444444, 55.5555555555556, 
                           66.6666666666667, 77.7777777777778, 88.8888888888889, 100, 0, 
                           11.1111111111111, 22.2222222222222, 33.3333333333333, 44.4444444444444, 
                           55.5555555555556, 66.6666666666667, 77.7777777777778, 88.8888888888889, 
                           100, 0, 11.1111111111111, 22.2222222222222, 33.3333333333333, 
                           44.4444444444444, 55.5555555555556, 66.6666666666667, 77.7777777777778, 
                           88.8888888888889, 100, 0, 11.1111111111111, 22.2222222222222, 
                           33.3333333333333, 44.4444444444444, 55.5555555555556, 66.6666666666667, 
                           77.7777777777778, 88.8888888888889, 100, 0, 11.1111111111111, 
                           22.2222222222222, 33.3333333333333, 44.4444444444444, 55.5555555555556, 
                           66.6666666666667, 77.7777777777778, 88.8888888888889, 100, 0, 
                           11.1111111111111, 22.2222222222222, 33.3333333333333, 44.4444444444444, 
                           55.5555555555556, 66.6666666666667, 77.7777777777778, 88.8888888888889, 
                           100, 0, 11.1111111111111, 22.2222222222222, 33.3333333333333, 
                           44.4444444444444, 55.5555555555556, 66.6666666666667, 77.7777777777778, 
                           88.8888888888889, 100, 0, 11.1111111111111, 22.2222222222222, 
                           33.3333333333333, 44.4444444444444, 55.5555555555556, 66.6666666666667, 
                           77.7777777777778, 88.8888888888889, 100, 0, 11.1111111111111, 
                           22.2222222222222, 33.3333333333333, 44.4444444444444, 55.5555555555556, 
                           66.6666666666667, 77.7777777777778, 88.8888888888889, 100), y_coord = c(1.27207478413227, 
                                                                                                   1.27207478413227, 1.27207478413227, 1.27207478413227, 1.27207478413227, 
                                                                                                   1.27207478413227, 1.27207478413227, 1.27207478413227, 1.27207478413227, 
                                                                                                   1.27207478413227, 1.65618234735767, 1.65618234735767, 1.65618234735767, 
                                                                                                   1.65618234735767, 1.65618234735767, 1.65618234735767, 1.65618234735767, 
                                                                                                   1.65618234735767, 1.65618234735767, 1.65618234735767, 2.04028991058307, 
                                                                                                   2.04028991058307, 2.04028991058307, 2.04028991058307, 2.04028991058307, 
                                                                                                   2.04028991058307, 2.04028991058307, 2.04028991058307, 2.04028991058307, 
                                                                                                   2.04028991058307, 2.42439747380847, 2.42439747380847, 2.42439747380847, 
                                                                                                   2.42439747380847, 2.42439747380847, 2.42439747380847, 2.42439747380847, 
                                                                                                   2.42439747380847, 2.42439747380847, 2.42439747380847, 2.80850503703387, 
                                                                                                   2.80850503703387, 2.80850503703387, 2.80850503703387, 2.80850503703387, 
                                                                                                   2.80850503703387, 2.80850503703387, 2.80850503703387, 2.80850503703387, 
                                                                                                   2.80850503703387, 3.19261260025927, 3.19261260025927, 3.19261260025927, 
                                                                                                   3.19261260025927, 3.19261260025927, 3.19261260025927, 3.19261260025927, 
                                                                                                   3.19261260025927, 3.19261260025927, 3.19261260025927, 3.57672016348467, 
                                                                                                   3.57672016348467, 3.57672016348467, 3.57672016348467, 3.57672016348467, 
                                                                                                   3.57672016348467, 3.57672016348467, 3.57672016348467, 3.57672016348467, 
                                                                                                   3.57672016348467, 3.96082772671008, 3.96082772671008, 3.96082772671008, 
                                                                                                   3.96082772671008, 3.96082772671008, 3.96082772671008, 3.96082772671008, 
                                                                                                   3.96082772671008, 3.96082772671008, 3.96082772671008, 4.34493528993548, 
                                                                                                   4.34493528993548, 4.34493528993548, 4.34493528993548, 4.34493528993548, 
                                                                                                   4.34493528993548, 4.34493528993548, 4.34493528993548, 4.34493528993548, 
                                                                                                   4.34493528993548, 4.72904285316088, 4.72904285316088, 4.72904285316088, 
                                                                                                   4.72904285316088, 4.72904285316088, 4.72904285316088, 4.72904285316088, 
                                                                                                   4.72904285316088, 4.72904285316088, 4.72904285316088), k = c(0.351190545556044, 
                                                                                                                                                                0.402015361073213, 0.48094295327124, 0.50810565286815, 0.511050545698899, 
                                                                                                                                                                0.699101076383458, 0.694376226699522, 0.787703068039111, 0.703909839507896, 
                                                                                                                                                                0.684716702388908, 0.3497800990482, 0.40622480657861, 0.50414652717829, 
                                                                                                                                                                0.529895831755873, 0.531270708380838, 0.747872635061465, 0.741757131973139, 
                                                                                                                                                                0.850198553369452, 0.779238835857405, 0.752450375256723, 0.348896590167603, 
                                                                                                                                                                0.409249693296974, 0.526962532021722, 0.552582085470236, 0.550644399465935, 
                                                                                                                                                                0.799660481113466, 0.799419364330684, 0.923822722948855, 0.872773192018314, 
                                                                                                                                                                0.836386311967505, 0.348684770158436, 0.411315897626239, 0.549286530004577, 
                                                                                                                                                                0.576124359291355, 0.568818792288157, 0.855432558708469, 0.870173300097835, 
                                                                                                                                                                1.00953124004072, 0.985488745721401, 0.938014353449385, 0.349230750359396, 
                                                                                                                                                                0.412624427796125, 0.57111115861015, 0.600528120932586, 0.585499847866914, 
                                                                                                                                                                0.91623076813441, 0.956478940336248, 1.10773459897746, 1.11552559911498, 
                                                                                                                                                                1.05667290331708, 0.350672967408514, 0.413454520686879, 0.592337311702096, 
                                                                                                                                                                0.625827849207283, 0.600443741054026, 0.982983987710689, 1.05981331564001, 
                                                                                                                                                                1.21791489755301, 1.25868883639333, 1.18910819505162, 0.352927826321529, 
                                                                                                                                                                0.414030082837993, 0.612942490950093, 0.652118824592372, 0.613515780206541, 
                                                                                                                                                                1.05629287029952, 1.18020253916402, 1.33918896692598, 1.41023492272489, 
                                                                                                                                                                1.33089593863805, 0.355981362559226, 0.414537595656719, 0.632723408860561, 
                                                                                                                                                                0.679546551936591, 0.624701408172261, 1.13626356686655, 1.31642469466783, 
                                                                                                                                                                1.4703293290137, 1.56631090115082, 1.47764848653351, 0.359713149263007, 
                                                                                                                                                                0.415299210716155, 0.653142029397428, 0.708295826452401, 0.634131473438615, 
                                                                                                                                                                1.22248003170447, 1.46661895293611, 1.61036911297606, 1.72389760304986, 
                                                                                                                                                                1.62501919380059, 0.363915570276277, 0.41638643535383, 0.669393020235381, 
                                                                                                                                                                0.73863647666385, 0.642093668470497, 1.31408744224119, 1.62897502489609, 
                                                                                                                                                                1.75854113809976, 1.87583909078164, 1.77066218075484)), class = "data.frame", row.names = c(NA, 
                                                                                                                                                                                                                                                            -100L))

g <- ggplot()
g <- g + geom_raster(mapping = aes(x =x_coord, y=y_coord, fill=k), data = testy, interpolate = FALSE)
g <- g + scale_fill_gradientn(name="..",
                              limits=c(0,2),
                              breaks=seq(0,2, by=.5),
                              values = c(0,0.2,0.5,1),#these are percentage, for example, to get color red, you need to reach 1 (100%) of high_f
                              colours=c("white","darkgreen","yellow","red"))
g <- g + scale_y_continuous(labels = scales::number_format(accuracy = .1,decimal.mark = '.'),
                            limits=c(min(testy$y_coord),max(testy$y_coord)), breaks=seq(0,max(testy$y_coord),by=(max(testy$y_coord)/10)))
plot(g)

1 Ответ

1 голос
/ 23 апреля 2020

Вы хотите преобразовать свои значения в экспоненциальный (exp (x)), например, так:

ggplot()+
  geom_raster(mapping = aes(x =x_coord, y=y_coord, fill=k), data = testy, interpolate = FALSE)+
  scale_fill_gradientn(name="..",
                       limits=c(0,2),
                       breaks=seq(0,2, by=.5),
                       values = c(0,0.2,0.5,1),#these are percentage, for example, to get color red, you need to reach 1 (100%) of high_f
                       colours=c("white","darkgreen","yellow","red"))+
  scale_y_continuous(labels = function(x) round(exp(x),1))

enter image description here

Или для отображения Значение как верхний индекс «е», как в этом решении?

ggplot()+
  geom_raster(mapping = aes(x =x_coord, y=y_coord, fill=k), data = testy, interpolate = FALSE)+
  scale_fill_gradientn(name="..",
                       limits=c(0,2),
                       breaks=seq(0,2, by=.5),
                       values = c(0,0.2,0.5,1),#these are percentage, for example, to get color red, you need to reach 1 (100%) of high_f
                       colours=c("white","darkgreen","yellow","red"))+
  scale_y_continuous(labels = function(x) label_parsed(paste("e^",x)))

enter image description here

Как указал @teunbrand, вы можете получить те же результаты используя функцию label_math из пакета scales:

... +
   scale_y_continuous(labels = scales::label_math(e^.x))
...