File: histo_manual.py

package info (click to toggle)
vedo 2025.5.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 10,404 kB
  • sloc: python: 64,792; javascript: 1,932; xml: 437; sh: 139; makefile: 6
file content (82 lines) | stat: -rw-r--r-- 2,599 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
"""Categories and repeats"""
# manually create a plot by adding Rectangles to a Figure object
from vedo import np, settings, Rectangle, Text3D, Line, DashedLine
from vedo.pyplot import Figure

settings.default_font = "Theemim"

#################################################################### First plot
groupA = np.random.randn(3)*10+50
groupB = np.random.randn(3)*10+60
groupC = np.random.randn(3)*10+70

fig = Figure(
    [-5,55], [-10,100],   # x and y ranges
    xtitle='', ytitle='', # this disables x and y axes
)

#################
x0 = 0
for i in range(3):
    x1 = x0 + 4
    val= groupA[i]
    fig += Rectangle([x0,0], [x1, val], c=f'red{3+i*2}')
    x0 = x1
fig += Text3D("Group A", justify='center', c='k').pos(6,-7).scale(4)
fig += Line([-1,0], [13, 0], lw=2)

#################
x0 = 20
for i in range(3):
    x1 = x0 + 4
    val= groupB[i]
    fig += Rectangle([x0,0], [x1, val], c=f'purple{3+i*2}')
    x0 = x1
fig += Text3D("Group B", justify='center', c='k').pos(26,-7).scale(4)
fig += Line([19,0], [33, 0], lw=2)

#################
x0 = 40
for i in range(3):
    x1 = x0 + 4
    val= groupC[i]
    fig += Rectangle([x0,0], [x1, val], c=f'orange{3+i*2}')
    x0 = x1
fig += Text3D("Group C", justify='center', c='k').pos(46,-7).scale(4)
fig += Line([39,0], [53, 0], lw=2)

#################
fig += DashedLine([-2,50], [55,50], c='k3', lw=1)
fig += Text3D("50%").pos(-7,49).scale(3).c('k')
fig.show(size=(1000,700), zoom='tight', title=__doc__).clear()


#################################################################### Second plot
fig = Figure(
    [0, 100], [-20, 80],
    aspect=3/4,             # can change the aspect ratio
    xtitle='', ytitle='', # this disables x and y axes
)
for i in range(5):
    val = np.random.randn()*10+50
    y0, y1 = 2*i, 2*i+1
    fig += Rectangle([0,y0], [100,y1], radius=0.5, c='k6')
    fig += Rectangle([0,y0], [val,y1], radius=0.5, c='r4').z(1)
fig += Text3D("Group A", justify='center', c='k').pos(50,-5).scale(2.5)


for i in range(5):
    val = np.random.randn()*10+60
    y0, y1 = 2*i + 20, 2*i+1 + 20
    fig += Rectangle([0,y0], [100,y1], radius=0.5, c='k6')
    fig += Rectangle([0,y0], [val,y1], radius=0.5, c='p5').z(1)
fig += Text3D("Group B", justify='center', c='k').pos(50,15).scale(2.5)

for i in range(5):
    val = np.random.randn()*10+70
    y0, y1 = 2*i + 40, 2*i+1 + 40
    fig += Rectangle([0,y0], [100,y1], radius=0.5, c='k6')
    fig += Rectangle([0,y0], [val,y1], radius=0.5, c='o5').z(1)
fig += Text3D("Group C", justify='center', c='k').pos(50,35).scale(2.5)

fig.show(size=(1000,700), zoom='tight').close()