2015-02-12 3 views
1

У меня есть измерения толщины, сделанные на плоской пластине. Есть ли какой-либо прецедент, как условное форматирование в gnuplot? Я хотел бы иметь четыре различных участков со значениями,Условное форматирование в gnuplot

  1. Выше, чем заданное число, скажем, в этом случае 0,5
  2. ниже 0,5
  3. Между заданном диапазоне, скажем, 0,5 и 0,51
  4. Только значения 0,5?

Как изменить коды ниже?

set pm3d map 
    splot 't.dat' matrix 

Вот мой файл данных

0.509 0.510 0.515 0.529 0.521 0.516 0.515 
0.511 0.506 0.512 0.528 0.524 0.517 0.512 
0.510 0.506 0.506 0.530 0.524 0.522 0.505 
0.511 0.509 0.513 0.516 0.511 0.520 0.510 
0.524 0.516 0.512 0.511 0.507 0.518 0.492 
0.525 0.521 0.515 0.517 0.518 0.522 0.500 
0.530 0.521 0.513 0.512 0.511 0.519 0.503 
0.562 0.516 0.510 0.516 0.522 0.518 0.508 
0.520 0.518 0.512 0.517 0.518 0.518 0.510 
0.510 0.509 0.503 0.507 0.523 0.519 0.522 
0.506 0.500 0.424 0.507 0.523 0.527 0.519 
0.509 0.430 0.500 0.513 0.519 0.528 0.524 
0.506 0.503 0.503 0.506 0.513 0.528 0.533 
0.506 0.517 0.519 0.524 0.524 0.526 0.528 
0.525 0.517 0.499 0.520 0.521 0.524 0.518 
0.519 0.518 0.516 0.519 0.521 0.520 0.519 
0.521 0.502 0.515 0.518 0.518 0.523 0.522 
0.515 0.519 0.519 0.534 0.524 0.525 0.516 
0.517 0.510 0.522 0.532 0.533 0.530 0.525 
0.520 0.457 0.526 0.530 0.530 0.531 0.524 
0.530 0.520 0.531 0.529 0.527 0.526 0.524 

Спасибо!

+0

Это можно сделать, но то, что вы хотите поставить на карту тепла для тех точек, для которых значение находится вне диапазона? – Miguel

+0

Возможно, это вариант для построения контуров для этих значений. – Christoph

+0

@Miguel, значения вне диапазона с белым цветом? Так что, глядя на сюжет, я могу иметь визуальное представление о состоянии толщины пластины. – kuki

ответ

1

Вы можете сделать условные графики, как это, но условная фильтрация оставит «дыры» на вашем графике.

Без форматирования:

set pm3d map 
splot "./data" matrix 

enter image description here

Plotting только значения больше чем 0,5:

set pm3d map 
splot "./data" matrix u 1:2:($3 > 0.5 ? $3 : 1/0) 

enter image description here

Вы видите у вас есть очки пропали без вести. Если вы отфильтровываете еще больше, у вас будет больше очков, до крайности, что у вас может не быть ничего для построения (с < 0,5), потому что нет возможности интерполировать. То, что вы можете сделать, это заменить точки вне диапазона на фиксированное значение. Например, если значение меньше, чем 0,5 заменителя на 0,5, если это больше, чем 0,53 заменить на 0,53:

set pm3d map 
splot "./data" matrix u 1:2:($3 < 0.5 ? 0.5 : $3 > 0.53 ? 0.53 : $3) 

enter image description here

Для более хорошего дисплея с этими маленькими матрицами, вы можете думать об интерполяции:

set pm3d map interpolate 32,32 
splot "./data" matrix u 1:2:($3 < 0.5 ? 0.5 : $3 > 0.53 ? 0.53 : $3) 

enter image description here

+0

Спасибо Мигель. У меня вопрос или два. Надеемся, вы будете готовы ответить на них на основе ваших решений. – kuki

+0

@kuki Просто спросите. В этом и состоит цель SO. – Miguel

+0

Я получил условие, но не могу понять, почему только столбцы 1, 2 и 3 в 1: 2: ($ 3> 0,5? $ 3: 1/0). Это больше похоже на строку: column: values? – kuki

Смежные вопросы