Я использую fill.contour() для построения данных, хранящихся в матрице. Данные генерируются (сильно) нелинейной функцией, поэтому их распределение совсем неравномерно, а диапазон очень велик.
Следовательно, я должен использовать опцию «уровни» для точной настройки сюжета. Однако fill.contour() не использует эти пользовательские уровни для создания соответствующего цветового ключа для тепловой карты, что я нахожу довольно удивительным.
Вот простой пример того, что я имею в виду:
x = c(20:200/100)
y = c(20:200/100)
z = as.matrix(exp(x^2)) %*% exp(y^2)
filled.contour(x=x,y=y,z=z,color.palette=colorRampPalette(c('green','yellow','red')),levels=c(1:60/3,30,50,150,250,1000,3000))
Как видите, цветовой ключ, созданный с помощью приведенного выше кода, практически бесполезен. Я хотел бы использовать какую-то проекцию (возможно, sin (x) или tanh (x)?), чтобы верхний диапазон не был чрезмерно представлен в ключе (линейным образом).
На данный момент я хотел бы:
1) узнайте, есть ли что-то очень простое/очевидное, что мне не хватает, например: возможность сделать эту «адаптацию диапазона клавиш» автоматически; 2) искать предложения/помощь о том, как сделать это самостоятельно, если ответ на 1) отрицательный.
Большое спасибо!
PS: Прошу прощения за мой английский, он далек от совершенства. Пожалуйста, дайте мне знать, если вам нужно, чтобы я что-то прояснил.