Сетка z-значения Mathematica на графиках - PullRequest
1 голос
/ 24 марта 2012

У меня есть список {x,y,z} значений, и я использую ListDensityPlot для его визуализации.Я хочу нарисовать контуры с чем-то вроде MeshFunctions->{#3&}.Вот что у меня сейчас:

ListDensityPlot[data, PlotRange->{0, 350}, Mesh->{10}, MeshFunctions->{#3 &}]

Но я хочу, чтобы значения контуров экспоненциально росли от минимального значения z до максимального диапазона (который составляет 350).Как я могу это сделать?Спасибо!

1 Ответ

1 голос
/ 25 марта 2012

Если вы даете одно число (например, 10) Mesh, вы запрашиваете столько контуров, равномерно распределенных. Но если вы дадите ему список значений, в этих точках будут нарисованы контуры.

Итак, все, что нам сейчас нужно, это список из десяти чисел (скажем, n чисел), экспоненциально увеличивающийся от минимального значения (назовите его min) до максимального (назовите его max). Мы можем сгенерировать это так - доказательство оставлено в качестве упражнения:

Table[
    min Exp[i Log[max / min] / (n - 1)],
    {i, 0, n - 1}
]

Итак, решение вашей проблемы:

min = Min[data[[All, 3]]];
ListDensityPlot[
    data,
    PlotRange->{0, 350},
    Mesh->{Table[
        min Exp[i Log[350 / min] / 9],
        {i, 0, 9}
    ]},
    MeshFunctions->{#3 &}
]

Обратите внимание на дополнительные скобки вокруг вызова Table, которые делают этот список значений спецификацией для отдельной сетки.

...