Динамическое (или принудительное) масштабирование ColorFunction - PullRequest
4 голосов
/ 22 апреля 2011

Чтение этот вопрос при импорте ColorData из matlab, мне было интересно, есть ли способ изменить диапазон значений, по которым масштабируется ColorFunction. Вероятно, это было не совсем понятно, поэтому позвольте мне показать с помощью рисунка из matlab (используется тот же пример, что и в предыдущем вопросе)

enter image description here

График слева - оригинал, с ColorData, сопоставленным со значениями данных между -1 и 1. Теперь я могу легко настроить отображение на значения данных между 0 и 1, в результате чего всем значениям, меньшим 0, назначается синий цвет (самый низкий в цветовой карте). PlotRange является ближайшей функцией, и использование ClippingStyle в дополнение к этому дает аналогичную цифру. Однако он не масштабирует ColorData для сопоставления с диапазоном графика.

Как я могу сделать это в Mathematica?

Кстати, чтобы вставить цветные полосы с помощью Mathematica, вы можете посмотреть на эту функцию

1 Ответ

9 голосов
/ 22 апреля 2011

Вот функция, примененная к поверхности:

Plot3D[x + y, {x, -2, 2}, {y, -2, 2}, 
 ColorFunction -> (ColorData["Rainbow", #3] &), Mesh -> {{1}, {1}}]

Чтобы посмотреть в верхнем правом углу с той же функцией цвета и масштабирования, я установил ColorFunctionScaling -> False и вручную масштабировал функцию цвета, чтобы сопоставить (глобальный) минимум с нулем и максимум с единицей, используя Rescale :

Plot3D[x + y, {x, 1, 2}, {y, 1, 2}, ColorFunctionScaling -> False,
 ColorFunction -> (ColorData["Rainbow", Rescale[#3, {-4, 4}, {0, 1}]] &)]

screenshot of the two plots

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...