Revision 9791e4f3
Added by Marc Nicolas almost 10 years ago
| webstatDev/idoc_Maison/webstat/libChart4StatSitools2.py | ||
|---|---|---|
| 19 | 19 |
except BaseException: |
| 20 | 20 |
sys.exit("Import failed in module libStatSitools :\n\tdatetime module is required")
|
| 21 | 21 |
try: |
| 22 |
from datetime import date |
|
| 23 |
except BaseException: |
|
| 24 |
sys.exit("Import failed in module libStatSitools :\n\tdate module is required")
|
|
| 25 |
try: |
|
| 22 | 26 |
import pygal |
| 23 | 27 |
except BaseException: |
| 24 | 28 |
sys.exit("Import failed in module libStatSitools :\n\tpygal module is required")
|
| ... | ... | |
| 28 | 32 |
sys.exit("Import failed in module libStatSitools :\n\tdateutil.relativedelta module is required")
|
| 29 | 33 |
|
| 30 | 34 |
#PATH FOR DEV |
| 31 |
home_base = "/home/marc/MyDev/sitools-idoc/webstatDev/idoc_Maison"
|
|
| 35 |
home_base = "/home/marc/Projet/idoc_Maison"
|
|
| 32 | 36 |
#PATH FOR PROD |
| 33 | 37 |
#home_base = "/var/www/django/mon_projet/" |
| 34 | 38 |
|
| ... | ... | |
| 116 | 120 |
for dd in sorted(dates_tmp_not_sorted, key=lambda d: map(int, d.split('/'))):
|
| 117 | 121 |
dates_tmp_str_sorted.append(dd.split('/')[1]+"/"+dd.split('/')[0][2:])
|
| 118 | 122 |
|
| 119 |
# date_min = datetime.strptime(dates_tmp_str_sorted[0], "%m/%y") |
|
| 120 |
# date_max = datetime.strptime(dates_tmp_str_sorted[len(dates_tmp_str_sorted)-1], "%m/%y") |
|
| 121 |
|
|
| 122 | 123 |
for i in range(0, int(diff_month(start_date, end_date)+1)): |
| 123 | 124 |
t = datetime.combine(start_date, datetime.min.time())+relativedelta(months=i) |
| 124 | 125 |
dates_sorted.append(t) |
| ... | ... | |
| 131 | 132 |
list_tmp2 = [] |
| 132 | 133 |
list_tmp.append("")
|
| 133 | 134 |
|
| 134 |
bar_chart = pygal.DateY(x_label_rotation=90, human_readable=True, y_scale=1073741824) |
|
| 135 |
bar_chart.title = title_chart |
|
| 136 |
bar_chart.x_label_format = "%m/%Y" |
|
| 137 |
bar_chart.x_labels = dates_sorted |
|
| 138 |
print "************* dates_sorted : ", dates_sorted |
|
| 135 |
#bar_chart = pygal.DateY(x_label_rotation=90, human_readable=True, y_scale=1073741824)
|
|
| 136 |
#bar_chart.title = title_chart
|
|
| 137 |
#bar_chart.x_label_format = "%m/%Y"
|
|
| 138 |
#bar_chart.x_labels = dates_sorted
|
|
| 139 |
#print "************* dates_sorted : ", dates_sorted
|
|
| 139 | 140 |
try: |
| 140 | 141 |
for data in dates_sorted: |
| 141 | 142 |
if data not in dico_data2.keys(): |
| ... | ... | |
| 143 | 144 |
list_tmp2.append((data, dico_data2[data])) |
| 144 | 145 |
list_tmp.append(list_tmp2) |
| 145 | 146 |
|
| 146 |
bar_chart.add(list_tmp[0], (list_tmp[1][i] for i in range(0, len(list_tmp[1])))) |
|
| 147 |
bar_chart.show_legend = False |
|
| 147 |
#bar_chart.add(list_tmp[0], (list_tmp[1][i] for i in range(0, len(list_tmp[1])))) |
|
| 148 |
#bar_chart.show_legend = False |
|
| 149 |
date_svg = add_date() |
|
| 150 |
url_output_bar_chart_svg = url_png+"Bar_by_Month_"+date_svg+".svg" |
|
| 151 |
#bar_chart.render_to_file(home_base+url_output_bar_chart_svg) |
|
| 152 |
#url_output_bar_chart_png = url_bar_chart_png(list_tmp, dates_sorted, title_chart) |
|
| 153 |
|
|
| 154 |
datetimeline = pygal.DateTimeLine(x_label_rotation=35, truncate_label=-1,human_readable=True,x_value_formatter=lambda dt: dt.strftime('%m/%Y'))
|
|
| 155 |
datetimeline.title = title_chart |
|
| 156 |
datetimeline.x_labels = dico_data2.keys() |
|
| 157 |
datetimeline.add("",list_tmp2)
|
|
| 158 |
|
|
| 159 |
datetimeline.show_legend = False |
|
| 148 | 160 |
date_svg = add_date() |
| 149 | 161 |
url_output_bar_chart_svg = url_png+"Bar_by_Month_"+date_svg+".svg" |
| 150 |
bar_chart.render_to_file(home_base+url_output_bar_chart_svg)
|
|
| 151 |
url_output_bar_chart_png = url_bar_chart_png(list_tmp, dates_sorted, title_chart)
|
|
| 162 |
datetimeline.render_to_file(home_base+url_output_bar_chart_svg)
|
|
| 163 |
url_output_bar_chart_png = url_bar_chart_png(list_tmp2, dico_data2.keys(), title_chart)
|
|
| 152 | 164 |
except BaseException, e: |
| 153 | 165 |
print str(e) |
| 154 | 166 |
return [url_output_bar_chart_svg, url_output_bar_chart_png] |
| 155 | 167 |
|
| 156 | 168 |
|
| 157 | 169 |
def url_bar_chart_png(list_data, dates, title): |
| 158 |
bar_chart = pygal.DateY(x_label_rotation=90) |
|
| 159 |
bar_chart.title = title |
|
| 160 |
bar_chart.x_label_format = "%m/%Y" |
|
| 161 |
bar_chart.x_labels = dates |
|
| 162 |
bar_chart.add(list_data[0], (list_data[1][i] for i in range(0, len(list_data[1])))) |
|
| 170 |
datetimeline = pygal.DateTimeLine(x_label_rotation=35, truncate_label=-1,human_readable=True,x_value_formatter=lambda dt: dt.strftime('%m/%Y'))
|
|
| 171 |
datetimeline.x_labels = dates |
|
| 172 |
datetimeline.title = title |
|
| 173 |
datetimeline.add("",list_data)
|
|
| 163 | 174 |
# A METTRE POUR CREER LE PNG ! |
| 164 |
bar_chart.print_values = False
|
|
| 165 |
bar_chart.show_legend = False
|
|
| 175 |
datetimeline.print_values = False
|
|
| 176 |
datetimeline.show_legend = False
|
|
| 166 | 177 |
url_output_png = url_png+"Bar_by_Month_"+add_date()+".png" |
| 167 |
bar_chart.render_to_png(home_base+url_output_png) |
|
| 178 |
|
|
| 179 |
datetimeline.render_to_png(home_base+url_output_png) |
|
| 180 |
|
|
| 168 | 181 |
return url_output_png |
| 169 | 182 |
|
| 170 | 183 |
|
| 171 | 184 |
def diff_month(d2, d1): |
| 172 | 185 |
return (d1.year - d2.year)*12 + d1.month - d2.month |
| 186 |
|
|
| 187 |
def format_download_vol(vol_down): |
|
| 188 |
vol_data = "" |
|
| 189 |
try: |
|
| 190 |
if 1000 <= vol_down < 1000000: |
|
| 191 |
vol_data = str(round(vol_down/1000, 2))+" Ko" |
|
| 192 |
elif 1000000 <= vol_down < 1000000000: |
|
| 193 |
vol_data = str(round(vol_down/1000000, 2))+" Mo" |
|
| 194 |
elif 1000000000 <= vol_down < (1000000000*1000): |
|
| 195 |
vol_data = str(round(vol_down/1000000000, 2))+" Go" |
|
| 196 |
except BaseException, e: |
|
| 197 |
print str(e) |
|
| 198 |
return vol_data |
|
Also available in: Unified diff
Mise en place de la nouvelle API Pygal avec le nouveau bar_chart