Я хочу отображать наборы табличных точек данных с разными цветами линий и типами штрихов в gnuplot. Каждый комплект состоит из 4-х небольших файлов ".csv", которые должны быть напечатаны в одном и том же поместье. Некоторые наборы взяты из статьи, другие — мои собственные смоделированные данные.
Я хочу, чтобы бумажные значения были черными линиями, но с разными типами штрихов, а смоделированные данные были сплошными линиями, но разных цветов. В следующем «наборе» находится переменная в цикле for, который перебирает все указанные наборы. Для цвета линии выражение
lc ( set <= baseSets ? -1 : set )
работает, но если я попробую то же самое для типов тире, например:
dt ( set <= baseSets ? set : 1 )
Я получаю сообщение об ошибке, говорящее «ожидается запятая» и указывающее на «заголовок»: gnuplot ошибка тире, если
Почему «dt» принимает «set» как переменную и любое другое число, но с условием if нарушает код? По следующей ссылке находится архив со сценарием и различными наборами для рисования.
архив со скриптом gnuplot и бумагой + смоделированные наборы
Если вы посмотрите на help dashtype
, вы увидите, что есть три разных обозначения для записи опции dashtype.
Syntax:
dashtype N # predefined dashtype invoked by number
dashtype "pattern" # string containing a combination of the characters
# dot (.) hyphen (-) underscore(_) and space.
dashtype (s1,e1,s2,e2,s3,e3,s4,e4) # dash pattern specified by 1 to 4
# numerical pairs <solid length>, <emptyspace length>
В вашем скрипте dt ( set <= baseSets ? set : 1 )
интерпретируется как третья запись из-за символа '(' после тире.
После оценки это будет интерпретировано как dt (anInteger)
.
В третьей нотации ожидается четное количество значений, разделенных запятыми, но вы даете только одно. Вот почему возвращается сообщение об ошибке «ожидается запятая».
Попробуйте заменить его на dt set <= baseSets ? set : 1
без скобок.
или для ясности:
dt int(set <= beseSets ? set : 1)