Гнуплот Подсвечники и короба
Работал с подсвечниками на реальных финансовых данных. Это прекрасно работает, если у меня нет пробелов в данных, которых много в исторических финансовых данных.
У меня было "установить относительную ширину коробки 1", и она работает нормально, в большинстве случаев она дает мне правильную "ширину" подсвечника. Но если между двумя точками нет данных, свеча станет более толстой, то есть простирается вправо, чтобы заполнить этот пробел. Визуализация ужасная, расширение вправо действительно плохое.
Я попытался поиграть с установленным значением boxwidth x absolute, но не могу понять, как оно отображается. Я сузил это до set boxwidth 37500 absolute
и понятия не имею, почему это число работает, даже если у него проблемы еще хуже, чем у установленной относительной ширины коробки 1.
Первое изображение - это то, как оно выглядит, используя set boxwidth 37500 absolute
, Там даты идут с 31.01.13, 02.01.13, 02.03.13, 02.04.13, 02.05.13. Там нет 02.02.13:
Абсолют показывает правильный разрыв между 02/01 и 02/02, но 02/03 и 02/04 частично совпадают по причинам, которые я не могу объяснить.
Второе изображение использует установленную ширину коробки 1 относительно. Это в основном так, как я хочу. Подсвечники соседние и в основном правые. Но разрыв 02/02/13 откладывается вправо. На 02/09/13 также есть пробел, где он также откармливается, или, возможно, 2 с обеих сторон расширяются, чтобы заполнить пробел, который я не знаю.
Как я могу настроить это так, чтобы все подсвечники имели одинаковую ширину и промежутки в данных были пустыми?
Я гуглил это как сумасшедший, и никто не говорит об этом. Несколько примеров подсвечников, которые я нашел, используют не "даты", а целые числа, абсолютно бесполезные. Графики подсвечника требуют дат согласно руководству.
Запуск Gnuplot 4.6 с уровнем исправления 0 в Windows 7.
Спасибо
PS: я должен был добавить данные здесь идет.
basic.csv
:
2013-01-15 00:00:00,93.879000,93.949000,92.874000,93.078000
2013-01-16 00:00:00,93.079000,93.672000,92.458000,92.800000
2013-01-17 00:00:00,92.799000,95.011000,92.629000,94.616000
2013-01-18 00:00:00,94.617000,94.872000,94.157000,94.662000
2013-01-20 17:00:00,94.649000,94.820000,93.965000,94.155000
2013-01-21 00:00:00,94.159000,94.938000,93.726000,94.009000
2013-01-22 00:00:00,94.011000,94.284000,93.147000,93.231000
2013-01-23 00:00:00,93.229000,94.024000,92.793000,93.649000
2013-01-24 00:00:00,93.650000,94.715000,93.559000,94.489000
2013-01-25 00:00:00,94.490000,95.083000,94.472000,94.749000
2013-01-27 17:00:00,94.819000,95.007000,94.652000,94.834000
2013-01-28 00:00:00,94.835000,94.968000,94.082000,94.809000
2013-01-29 00:00:00,94.803000,95.330000,94.370000,95.248000
2013-01-30 00:00:00,95.245000,95.450000,94.255000,94.365000
2013-01-31 00:00:00,94.372000,95.799000,94.328000,95.714000
2013-02-01 00:00:00,95.715000,96.718000,95.457000,96.597000
2013-02-03 17:00:00,96.716000,96.777000,96.370000,96.572000
2013-02-04 00:00:00,96.574000,97.064000,95.968000,96.044000
2013-02-05 00:00:00,96.043000,97.426000,95.945000,97.131000
2013-02-06 00:00:00,97.133000,97.284000,96.092000,96.395000
2013-02-07 00:00:00,96.396000,97.023000,95.813000,96.145000
2013-02-08 00:00:00,96.146000,96.182000,95.124000,95.625000
2013-02-10 17:00:00,95.623000,95.744000,95.210000,95.339000
2013-02-11 00:00:00,95.336000,96.877000,95.168000,96.537000
2013-02-12 00:00:00,96.536000,96.719000,95.776000,96.214000
2013-02-13 00:00:00,96.216000,96.890000,96.114000,96.775000
2013-02-14 00:00:00,96.771000,96.964000,95.609000,95.621000
2013-02-15 00:00:00,95.622000,96.676000,95.521000,96.351000
absolute.plt
:
reset
set border linecolor rgbcolor "yellow"
set key textcolor rgbcolor "white"
set obj 1 rectangle behind from screen 0,0 to screen 1,1
set obj 1 fillstyle solid 1.0 fillcolor rgbcolor "black"
set xdata time
set timefmt"%Y-%m-%d %H:%M:%S"
set xrange ["2013-01-15 00:00:00":"2013-02-15 23:59:59"]
set yrange [*:*]
set datafile separator ","
set palette defined (-1 'red', 1 'green')
set cbrange [-1:1]
unset colorbox
set style fill solid noborder
set boxwidth 37500 absolute
set title "AUDJPY" textcolor rgbcolor "white"
plot 'basic.csv' using 1:2:4:3:5:($5 < $2 ? -1 : 1) with candlesticks palette
relative.plt
:
reset
set border linecolor rgbcolor "yellow"
set key textcolor rgbcolor "white"
set obj 1 rectangle behind from screen 0,0 to screen 1,1
set obj 1 fillstyle solid 1.0 fillcolor rgbcolor "black"
set xdata time
set timefmt"%Y-%m-%d %H:%M:%S"
set xrange ["2013-01-15 00:00:00":"2013-02-15 23:59:59"]
set yrange [*:*]
set datafile separator ","
set palette defined (-1 'red', 1 'green')
set cbrange [-1:1]
unset colorbox
set style fill solid noborder
set boxwidth 1 relative
set title "AUDJPY" textcolor rgbcolor "white"
plot 'basic.csv' using 1:2:4:3:5:($5 < $2 ? -1 : 1) with candlesticks palette
2 ответа
Когда используешь set boxwidth absolute
ширина задается в единицах оси X, что в случае дат равно секундам. Итак, ширина 37500
10 часов.
Вы также можете использовать явную ширину в 6-м столбце и переключиться на -2, чтобы получить автоматическую ширину поля для определенных столбцов. Однако это потребует от вас манипулирования файлом данных вручную.
Еще один момент: важно ли для вас включать часы в некоторые точки данных? Это то, что сужает расстояние некоторых соседних точек. Вы можете игнорировать часы, что даст вам минимальное расстояние в один день. Чтобы раздеть часы, используйте strptime
в using
заявление:
reset
set border linecolor rgbcolor "yellow"
set key textcolor rgbcolor "white"
set obj 1 rectangle behind from screen 0,0 to screen 1,1
set obj 1 fillstyle solid 1.0 fillcolor rgbcolor "black"
set xdata time
set timefmt"%Y-%m-%d %H:%M:%S"
set xrange ["2013-01-15 00:00:00":"2013-02-15 23:59:59"]
set yrange [*:*]
set datafile separator ","
set palette defined (-1 'red', 1 'green')
set cbrange [-1:1]
unset colorbox
set style fill solid noborder
set boxwidth 60000 absolute
set title "AUDJPY" textcolor rgbcolor "white"
plot 'basic.csv' using (strptime('%Y-%m-%d', strcol(1))):2:4:3:5:($5 < $2 ? -1 : 1) with candlesticks palette
Результат с 4.6.0:
Another script,
from candlestick_chart import Candle, Chart
# Add some candles
candles = [
Candle(133.520004, 133.610001, 126.760002, 129.410004),
Candle(128.889999, 131.740005, 128.429993, 131.009995),
Candle(127.720001, 131.050003, 126.379997, 126.599998),
Candle(128.360001, 131.630005, 127.860001, 130.919998),
Candle(132.429993, 132.630005, 130.229996, 132.050003),
]
# Create and display the chart
# Optional keyword arguments: title, width, height
chart = Chart(candles, title="Optional title")
# Set the chart title
chart.set_name("BTC/USDT")
# Set customs colors
chart.set_bear_color(1, 205, 254)
chart.set_bull_color(255, 107, 153)
chart.set_vol_bull_color(1, 205, 254)
chart.set_vol_bear_color(255, 107, 153)
# Set custom labels (empty string => label not displayed)
chart.set_label("highest", "ATH")
chart.set_label("lowest", "ATL")
chart.set_label("average", "")
chart.set_label("volume", "")
# Volume pane settings
chart.set_volume_pane_height(6)
chart.set_volume_pane_enabled(False)
# And, it is also responsive!
new_width = 200
new_height = 150
chart.update_size(new_width, new_height)
# By the way, did you know that you can add more candles in real-time?
chart.update_candles(candles[:3])
# Or completely replace current candles `enter code here`
chart.update_candles(candles[:3], reset=True)
chart.draw()