Как установить размер точки в gnuplot в единицах координат участка?Gnuplot: единицы измерения точки
Другими словами, точки должны уменьшаться, если я увеличиваю xrange.
Похоже, что все зависит от терминала. Есть ли обходной путь?
Как установить размер точки в gnuplot в единицах координат участка?Gnuplot: единицы измерения точки
Другими словами, точки должны уменьшаться, если я увеличиваю xrange.
Похоже, что все зависит от терминала. Есть ли обходной путь?
Вот небольшой пример использования встроенных данных ...
plot '-' u 1:2:1 ps variable
1 2
2 3
3 4
4 5
5 6
e
Обратите внимание, что в то время как можно изменить pointsize с использованием колонки из вашего файла данных, я не знаю ни одного способа определить, как большой друг точка должна быть, поскольку pointize (и даже pointtype) является терминальной зависимой величиной. Единственным обходным решением, которое я могу придумать, является масштабирование точек по зависимому от терминала значению.
default_value=1.0
func(x)=1.0*x #Change this to change the functional dependence of the pointsize on x.
scale_point(x)=(GPVAL_TERM=="postscript") ? 1.0*func(x) :\
(GPVAL_TERM=="png") ? 2.0*(x) :\
default_value
plot "mydata.dat" u 1:2:(scale_point($1)) w pt ps variable
Это некрасиво, но он должен получить работу - Вы могли бы также написать подобную функцию, которая возвращает pointtype для достижения какой-то независимости терминала с этим, а также ...
EDIT
Обратите внимание, мои точки увеличить в размере линейно х становится больше, но вы можете заменить любую функцию, которую вы хотите, чтобы пункты становятся все меньше, как вы считаете нужным. Я говорю, что я не считаю, что этот вариант существует, поскольку вы заявляете «все это зависит от терминалов». Я пытался дать уродливые взломать, чтобы позволить вам изменить это на основе каждого участка с минимальным вмешательством - позволяет для различных терминалов и т.д.
EDIT 2
Отвечая на ваш комментарий, я вспомнил странный маленький угол документации gnuplot, который может быть полезен.
set style fill transparent solid noborder #whatever fillstyle you want...
plot 'mydata' u 1:2:3 w circles
см help circles
... Я не уверен, когда эта функция была введена, вероятно, с Gnuplot 4.3, но если вы используете 4.2, то дайте ему попробовать и дайте мне знать, как она идет ...
Если я правильно понял вопрос, вы просто хотите, чтобы pointize был уменьшающейся функцией xrange. Точно, как большие точки печатаются и как они выглядят, зависит от терминала. Но нетрудно получить основное поведение, которое вы хотите.
Во-первых, определите функцию, чтобы вернуть размер. Давайте попробуем
sps(a,b) = 1./(b-a)
Установите xrange:
set xrange [0:3]
сделать сюжет, который вы не будете использовать:
plot sin(X)
Мы сделали, что для того, чтобы получить некоторые из специальных переменных GNUPLOT, определенный ,Теперь мы можем сделать
plot sin(x) with points pt 7 ps sps(GPVAL_X_MIN, GPVAL_X_MAX)
Если теперь сбросить xrange и повторного ввода команд как сюжет, вы увидите, что изменения pointsize, обратно пропорциональные xrange. Вероятно, вам нужна другая функция для pointize, чем пример «sps», который я использовал. Надеюсь, это похоже на то, что вам нужно.
для создания участков, которые вы не будете использовать, могу ли я предложить «неизвестный» терминал? Я предполагаю, что это целая цель. Тем не менее, я уверен, что автор вопроса хочет получить прекрасный контроль над pointize. – mgilson
Это не ответ на то, о чем я просил. Я знаю, как сделать переменную размер точки. Я не знаю, как указать размер в системе координат, которую gnuplot называет «первым». – hanno
Я знаю. Я говорю, что я не верю, что этот вариант существует, поскольку вы заявляете «все это зависит от терминалов». Я попытался предоставить уродливый взломать, чтобы вы могли модифицировать его на основе заговора с минимальным вмешательством - с учетом разных терминалов и т. Д. – mgilson
@hanno, по-видимому, я говорил слишком рано, и это возможно (по крайней мере, если вы хотите ваши точки появятся в виде кругов). Посмотрите мое второе обновление. – mgilson