Генерация непрерывной тепловой карты с неравномерной выборкой по оси x - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь создать тепловую карту с использованием неравномерно выбранных данных. Первоначально, когда, применяя код

ggplot(df,aes(x,y,fill=z))+geom_tile()

, я получаю тепловую карту, которая выглядит следующим образом:

enter image description here

Теперь я м заинтересован в дальнейшем изучении значений х около 0,1. Я выбираю данные и генерирую новую тепловую карту, используя ту же строку кода, и теперь моя тепловая карта выглядит следующим образом:

r

Я предполагаю, что сейчас ggplot не знает, как создать остальную часть графика, чтобы он выглядел непрерывным. Я думал, пытаясь заполнить пробелы с помощью функции заполнения Tidyr, но я не совсем уверен, как сделать этот подход. Есть ли другой способ, просто используя функции ggplot? Вот пример того, как выглядят данные:

sample_df<-structure(list(x = c(0.51, 1.61, 1.41, 1.61, 0.91, 0.01, 0.31, 
1.71, 1.11, 0.21, 0.31, 0.31, 0.61, 0.71, 1.71, 1.91, 0.51, 1.41, 
0.08, 0.065), y = c(0.0811, 0.0561, 0.0701, 0.0891, 0.0251, 0.0221, 
0.0011, 0.0641, 0.0271, 0.0551, 0.0501, 0.0971, 0.0171, 0.0171, 
0.0611, 0.0801, 0.0021, 0.0401, 0.0811, 0.0511), z = c(0.778151250383644, 
0.477121254719662, 0.477121254719662, 0.477121254719662, 0.602059991327962, 
Inf, Inf, 0.477121254719662, 0.477121254719662, 1.11394335230684, 
0.903089986991944, 0.954242509439325, 0.602059991327962, 0.602059991327962, 
0.477121254719662, 0.477121254719662, Inf, 0.477121254719662, 
2.05307844348342, 2.34439227368511)), row.names = c(NA, -20L), spec = structure(list(
cols = list(epsilon = structure(list(), class = c("collector_double", 
"collector")), mu = structure(list(), class = c("collector_double", 
"collector")), eta = structure(list(), class = c("collector_double", 
"collector")), N0 = structure(list(), class = c("collector_double", 
"collector"))), default = structure(list(), class = c("collector_guess", 
"collector")), skip = 1), class = "col_spec"), class = c("spec_tbl_df", 
"tbl_df", "tbl", "data.frame"))

1 Ответ

0 голосов
/ 01 марта 2020

Наконец-то разобрался сам. Поскольку расстояние между моими данными составляет около 0,1, я могу сделать ширину каждой плитки равной 0,1, и она заполнит все пространство.

ggplot(df,aes(x,y,fill=z))+geom_tile(width=0.1)

дает желаемый график

enter image description here

...