Human body weight (peso corporeo); 4170 Italian males in their twenties, in the year 1990
                  (in dimensioni minori / in smaller size:  click)

Sull'asse verticale è rappresentata la frequenza percentuale unitaria (o densità)
On the y axis, the unitary percentage frequency (or density) is represented
(that is the percentage frequencies divided by the amplitude of each interval).
You can round the mean.
In this case I have data classified into classes that are 5 wide; I round to units, 71.32… → 71.

Puoi aprire il codice e modificare la funzione: vedi l'Help
You can open the Code and modify the function: see the Help
HELP

// I: estremi degli intervalli, P: frequenze
I=[45, 50, 55, 60, 65, 70, 75, 80, 85, 90,95,100,105,110,115,120,125,130]
P=[  6,117,400,731,799,804,523,354,207,104,75, 28, 16,  2,  2,  1,  1]; NP=P.length
SUM=0; for(i=0;i<NP;i=i+1)  {SUM=SUM+P[i]}
mean=0; for(i=0;i<NP;i=i+1) {mean=mean+P[i]*(I[i]+I[i+1])/2}; mean=mean/SUM
Tot=0; for(i=0;i<NP;i=i+1) {Tot=Tot+P[i]}; for(i=0;i<NP;i=i+1) {P[i]=P[i]/Tot/(I[i+1]-I[i])}
LLx=[]; j=0; for(i=1;i<=NP;i=i+1) { LLx[j]=I[i-1]; LLx[j+1]=I[i-1]; LLx[j+2]=I[i]; LLx[j+3]=I[i]; j=j+4 }
LLy=[]; j=0; for(i=1;i<=NP;i=i+1) { LLy[j]=0; LLy[j+1]=P[i-1]; LLy[j+2]=P[i-1]; LLy[j+3]=0; j=j+4 }

aX = 40; bX = 140; aY = 0; bY = 0.04
Dx = 10; Dy = 0.005
XX=[50,100]; YY=[0.01,0.02,0.03,0.04]

function f(x) { y = 1/0; return y }
...
Cax="grey"; yy=YY; xx=XX
Q1x=[mean]; Q1y=[0]
C1="black"
L1x=LLx; L1y=LLy
...
AX=BX=AY=BY=""
BY = "Tot="+Tot; AY = "mean~"+mean

AAX=aX; BBX=bX; AAY=aY; BBY=bY