# CSV-файл графика с https://gs.statcounter.com/импорт csv из pylab import *matplotlib.rcParams.update ( { 'font.size ' : 16 } ) рисунок ( figsize = ( 14 , 10 ) ) д = {}# чтение данных CSV: с открытым ( 'browser-ww-monthly-200901-202412.csv' ) как csvfile : for r in csv . reader ( csvfile ): if r [ 0 ] == 'Дата' : h = r for x in range ( len ( r )): d [ r [ x ] ] = [] else : for x in range ( len ( r )): if h [ x ] == 'Дата' : d [ h [ x ] ] . append ( r [ x ]) else : d [ h [ x ] ] . append ( float ( r [ x ]))т = []# вычислить даты: for x in d [ 'Дата' ]: y , m = x . split ( '-' ) t . append ( float ( y ) + ( float ( m ) - 1 ) / 12 )# сортировка ключей по последним значениям: v = [] for k in d . keys (): if k != 'Date' : v . append (( k , float ( d [ k ][ - 1 ]))) v = sorted ( v , key = lambda a : a [ 1 ])[:: - 1 ] print ( v )# данные графика: for k in v : if k [ 1 ] >= 2 or max ( d [ k [ 0 ] ]) >= 10 : if k [ 0 ] == "IE" : plot ( t , d [ k [ 0 ]], label = "Internet Explorer" , lw = 3 ) elif k [ 0 ] == "Edge" : # складываем новую и старую версии Edge вместе: d2 = [ p + q for p , q in zip ( d [ "Edge" ], d [ "Edge Legacy" ])] plot ( t , d2 , label = "Edge" , lw = 3 ) else : plot ( t , d [ k [ 0 ]], label = k [ 0 ], lw = 3 ) xlabel ( 'Year' ) ylabel ( '%' ) title ( 'Доля использования основных веб-браузеров' ) grid ( True , ls = 'solid' ) legend ( loc = ( .7 , .4 )) gca ( ) . xaxis.get_major_formatter ( ) . set_useOffset ( False ) gca ( ) . xaxis.set_major_locator ( MultipleLocator ( 1 ) ) tick_params ( labelright = True ) xlim ( 2009 , 2025 ) ylim ( 0 , 70 ) gca () . tick_params ( axis = "both" , pad = 12 ) text ( t [ -1 ], - 8 , "Источник: StatCounter" , ha = "right " , size = 14 ) сохранитьfig ( "Web_browser_usage_share_StatCounter.svg" ) показать ()