2016-03-31 2 views
2

Несложно точки данных этикетки в Gnuplot, в этом примере, я использую третий столбец в качестве меток для этого набора данных (data.txt):точек данных этикетки для кумулятивного участка с Gnuplot

1 -22 "Event 0" 
2 -139.7 "Event 3" 
3 -11 "Event 7" 
4 -35.2 "Event 6" 
5 -139.7 "Event 2" 
6 -139.7 "Event 4" 
7 -84.7 "Event 1" 
8 -22 "Event 9" 
9 -64.9 "Event 8" 
10 -38.5 "Event 5" 

gnuplot> plot 'data.txt' u 1:2, "" u 1:2:3 w labels rotate offset 1 

Этих это результат (я опущена полировкой для этой цели): enter image description here

Тем не менее, мне нужна точки данных на графику кумулятивной сумма:

gnuplot> plot 'data.txt' u 1:2 smooth cumulative 

enter image description here

Теперь, как я могу наметить точки в своих новых «координатах»? Что-то вроде этого не работает (я хочу этикетки вниз в каждом колене кумулятивной кривой):

gnuplot> plot 'data.txt' u 1:2 s cum, "" u 1:2:3 s cum w labels offset 1 

enter image description here

Результат должен выглядеть примерно так (здесь вручную вырезать и расположенный с Gimp): enter image description here

+0

Пожалуйста, разместите образец своих данных. В частности, было бы полезно узнать, как выглядят ваши ярлыки. Способ сделать это будет во многом зависеть от того, как они выглядят. – Matthew

+0

Я согласен с @Matthew: с тем, что вы пишете, невозможно угадать, как вы разрешаете, какая метка печатается рядом с кумулятивной точкой. – Joce

+0

Извините, теперь я попытался объяснить это более подробно и с небольшим примером (не мой реальный прецедент, а 1: 1, переносимый из Gnuplot). – smartmic

ответ

1

Вы можете построить свой кумулятивный граф в файл, а затем использовать эти измененные данные так же, как и с обычным файлом данных. Чтобы получить доступ к ярлыки можно использовать команду вставки и использовать дополнительные колонки:

set table "cumulative_labels" 
plot 'data.txt' u 1:2:3 smooth cumulative w labels 
set table "cumulative_data" 
plot 'data.txt' u 1:2 smooth cumulative 
unset table 
plot 'cumulative_data' u 1:2 w l, \ 
"< paste cumulative_labels cumulative_data" u 4:5:3 w labels offset 1 

Edit:

Gnuplot-единственный способ сделать это без каких-либо промежуточных файлов, но опуская smooth cumulative вариант:

sum = 0. 
plot "data.txt" u 1:2 s cum, "" u (sum = sum + $2, $1):(sum):3 w labels offset 1 
+0

Лицо, которое отказалось от этого: в будущем, пожалуйста, напишите, в чем проблема в разделе комментариев. Я уже исправил это, но мне потребовалось некоторое время, чтобы понять, что решение не работает. Нисходящий рейтинг без комментариев, указывающий на проблему, не очень полезен. – Miguel

+0

Это работает, спасибо. Недостатком этого является то, что он подразумевает 2 временных файла и внешнюю системную команду. Может ли кто-нибудь думать о чисто «внутреннем» решении gnuplot? – smartmic

+0

@smartmic Использование 'smooth' часто мешает настройкам стиля, как в вашем случае.Решения, которые я обычно использую сам, и те, которые я видел чаще всего другими, включают в себя демпинг данных во внешние файлы и/или использование внешних команд. Тем не менее, вы можете сделать эту сумму самостоятельно, проанализировав данные «на лету» (как противоположность принципам «гладкой кумуляции»). См. Мое редактирование, как это сделать. – Miguel

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