Gnuplot:制作一个星期对齐的垂直日历

问题描述 投票:0回答:0

我正在尝试在 gnuplot 中制作一个垂直日历,其中的行按周对齐。多亏了这个thread,我已经把它水平放置了。但是,现在我想做一个垂直版本,因为它更适合我的需要。

这是代码:

reset session

myTimeFmt  = '%d/%m/%Y'
DateStart  = '01/01/2023'
DateEnd    = '31/12/2023'
SecsPerDay = 24*3600

set print $Data
    do for [t=strptime(myTimeFmt,DateStart):strptime(myTimeFmt,DateEnd):SecsPerDay] {
        print strftime(myTimeFmt,t)
    }
set print

set ytics 1 scale 0 font 'Times, 12'
set y2tics 1 out scale 0 font 'Times, 12'
set xtics 1 scale 0 font 'Times, 12'
set key noautotitle
set style fill solid 1 border lc '#A3ACB7'
set border lc rgb '#A3ACB7'
set lmargin 5
set rmargin 5
set bmargin 2.5
set tmargin 1.5

# y=0 only month, y=1 month+year
Month(t)        = int(tm_year(t)*12 + tm_mon(t))
MonthLabel(t,y) = strftime( y=0 ? '%b %Y' : '%b', t)
WeekDay(t)      = strftime('%a',t)[1:1]
DayColor(t)     = tm_wday(t) == 0 ? 0x284a64 : tm_wday(t) == 6 ? 0x1d374b : 0x1b222a
MonthFirst(t)   = int(strptime('%Y%m%d',sprintf('%04d%02d01',tm_year(t),tm_mon(t)+1)))
MonthOffset(t)  = tm_wday(MonthFirst(t))==0 ? 7 : tm_wday(MonthFirst(t))

set terminal pngcairo size 500,1100 enhanced font 'Times, 12' enhanced background '#0F1419'

plot $Data u \
    (Month(t)):\
    (t=timecolumn(1,myTimeFmt), tm_mday(t)+MonthOffset(t)):\
    (0.5):\
    (0.5):\
    (DayColor(t)):\
    ytic(WeekDay(t)):\
    xtic(MonthLabel(t,1)):\
    y2tic(WeekDay(t)) w boxxy lc rgb var

结果如下:

如您所见,最后一行向左偏移。月份的标签也被替换了(一月不见了,而十二月出现了两次)。这是我遇到的两个小错误。

gnuplot
© www.soinside.com 2019 - 2024. All rights reserved.