gnuplot - как построить невидимые точки так, чтобы график использовался только для разметки оси X - PullRequest
1 голос
/ 29 февраля 2020

У меня есть следующие данные в файле данных test1.txt:

A   36  1
A   35  1
B   48  2
B   37  2
B   15  2
C   36  3
C   25  3

и test2.txt

A   16  1
A   25  1
B   38  2
B   45  2
C   36  3

черчение выполняется как:

dat1="test1.txt"
dat2="test2.txt"
plot dat1 u ($3-0.2):2 w p t 'title 1', \
     dat2 u ($3+0.2):2 w p t 'title 2', \
     dat1 using 3:(0):xticlabels(1):x2ticlabels(1) notitle, \
     dat2 using 3:(0):xticlabels(1):x2ticlabels(1) notitle

Весь смысл иметь метки из первого столбца на оси x. Проблема в том, что последние две части сюжета

dat1 using 3:(0):xticlabels(1):x2ticlabels(1) notitle, \
dat2 using 3:(0):xticlabels(1):x2ticlabels(1) notitle

дают точки на y=0. И поскольку я не могу (или я не знаю, как это сделать) использовать

plot dat1 u ($3-0.2):2:xticlabels(1) w p t 'title 1'

(поскольку он наносит метку на x координату $3-0.2, а не на $3, что мне требуется), я Я вынужден сделать еще два фиктивных графика, но они дают точки, и я не знаю, как эффективно избежать этого, кроме смещения за пределы диапазона графика, например, dat1 using 3:(0):xticlabels(-1):x2ticlabels(-1) в случае построения только положительных значений. Есть ли хороший способ решить эту проблему?

Ответы [ 2 ]

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

Мое понимание вашего вопроса следующее: у вас есть некоторые данные, которые вы хотите сдвинуть по x на +/- 0.2, но соответствующий ti c не должен быть сдвинут. Вы были почти там. Конечно, есть точки на y=0, потому что вы говорите gnuplot сделать это. То, что вы имеете в виду под «невидимым», конечно, может быть также достигнуто с помощью полностью прозрачных точек, но более простой способ, вероятно, состоит в «нанесении» точек на NaN, т.е. нигде.

Код:

### plotting data with offset and tic without offset
reset session
set colorsequence classic

$Data1 <<EOD
A   36  1
A   35  1
B   48  2
B   37  2
B   15  2
C   36  3
C   25  3
EOD

$Data2 <<EOD
A   16  1
A   25  1
B   38  2
B   45  2
C   36  3
EOD

set offsets 0.5,0.5,0.5,0.5
set link x2
set x2tics

plot $Data1 u ($3-0.2):2 w p pt 7 t 'title 1', \
     $Data2 u ($3+0.2):2 w p pt 7 t 'title 2', \
     $Data1 using 3:(NaN):xtic(1):x2tic(1) notitle, \
     $Data2 using 3:(NaN):xtic(1):x2tic(1) notitle
### end of code

Результат:

enter image description here

0 голосов
/ 29 февраля 2020

Я не совсем понимаю, что вы пытаетесь сделать со своими данными, однако, если вы хотите сделать точки над осью X невидимыми, вы можете установить цвет линии на полную прозрачность для последних двух графиков:

dat1 using 3:(0):xticlabels(1):x2ticlabels(1) linecolor "#FFFF0000" notitle, \
dat2 using 3:(0):xticlabels(1):x2ticlabels(1) linecolor "#FFFF0000" notitle

В последних версиях Gnuplot ( ссылка ) можно добавить прозрачность, в этом конкретном случае вы хотите установить полную прозрачность для цвета линии, чтобы точки были невидимыми. Цветовой формат и прозрачность могут быть установлены с использованием шестнадцатеричной записи # AA RRGGBB, где AA (альфа) контролирует, насколько прозрачен цвет, для полной прозрачности вы хотите FF что эквивалентно 255 , обратите внимание, как мой цвет линии RED , но, поскольку он полностью прозрачен, мы его не видим. График с полной прозрачностью

...