рдЖрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд┐рдпреЛрдХреЛрдбреЗрдб рдбреЗрдЯрд╛ (рдЯреНрд╡рд┐рдЯрд░) рдХрд╛ рдЧрддрд┐рд╢реАрд▓ рджреГрд╢реНрдп

"рдирдпрд╛ рд╕рд╛рд▓ рджреЗрд╢ рдХреЛ рдкреЗрд╕ рдХрд░рддрд╛ рд╣реИ"

рдореИрдВ рднреВ-рд╕реНрдерд╛рдирд┐рдХ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдПрдХ рдЙрддреНрд╕рд╛рд╣реА рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдВред рд╡реЗ рдЖрдкрдХреЛ рд╕рд╛рдорд╛рдЬрд┐рдХ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ рднреМрддрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЙрд░реНрдбрд┐рдпреВ рдиреЗ рд▓рд┐рдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдорд╛рдирд╕рд┐рдХ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рдЙрдкрд▓рдмреНрдз рдерд╛ред рдлреЛрд░рд╕реНрдХреНрд╡реЗрдпрд░ рдЖрдо рддреМрд░ рдкрд░ рдореЗрд░рд╛ рдкреНрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд▓реА рдмрд╛рд░ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдФрд░ рдЖрдЬ рд╣рдо рдЯреНрд╡рд┐рдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
рдкрд┐рдЫрд▓реЗ 2012 рд╡рд░реНрд╖ рдХреЗ рдЕрдВрдд рд╕реЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореИрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдирдП рд╕рд╛рд▓ рдХреА рдмрдзрд╛рдИ рдХреЗ рдЯреНрд╡реАрдЯ рдХреА "рд▓рд╣рд░" рдХреНрдпрд╛ рджрд┐рдЦрддреА рд╣реИред рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреИрд╕реЗ рдЬрд╛рддрд╛ рд╣реИред рдЬрд▓реНрджреА рд╕реЗ рдирд╣реАрдВ рдХрд╣рд╛ред рдЙрдкрдХрд░рдг рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛: рдЖрд░, рдкрд╛рдпрдерди рдФрд░ ffmpegред


рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣


рдЬрдмрдХрд┐ рдореЗрд░реА рдкрддреНрдиреА рдиреЗ рдЙрддреНрд╕рд╡ рдХреА рддреИрдпрд╛рд░реА рдХреА рдФрд░ рдореЗрд░реЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЕрдЬрдЧрд░ рдФрд░ рдЯреНрд╡реАрдЯрд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдПрдХ рдЖрджрд┐рдо рд╕реНрдерд┐рддрд┐ / рдлрд┐рд▓реНрдЯрд░ рдЯреНрд╡реАрдЯ рдкрд╛рд░реНрд╕рд░ рдмрдирд╛рддреЗ рд╣реИрдВред
import tweetstream stream = tweetstream.FilterStream('TWITTER_LOGIN', 'TWITTER_PASSWORD', track = keywords_list) for tweet in stream: if tweet['coordinates']: #      date-time  # ( API Twitter     ) try: timestamp = datetime.datetime.strptime(tweet['created_at'], '%Y-%m-%d %H:%M:%S') except ValueError: timestamp = datetime.datetime.strptime(tweet['created_at'][4:-10]+tweet['created_at'][-4:], '%b %d %H:%M:%S %Y') #  4  - ""    timestamp += datetime.timedelta(hours=4) #       timestamp = datetime.datetime.strftime(timestamp, '%Y-%m-%d %H:%M:%S') #     cursor.execute('INSERT INTO tweets(link, latitude, longitude, date) VALUES ("http://www.twitter.com/{0}/status/{1}", "{2}", "{3}", "{4}")'.format( tweet['user']['screen_name'], tweet['id'], str(tweet['coordinates']['coordinates'][0]), str(tweet['coordinates']['coordinates'][1]), str(tweet['created_at']) )) db.commit() 

keywords_list - keywords_list рд╕реВрдЪреА, рд╣реИрд╢ рдЯреИрдЧ рдФрд░ рд╣реИрдкреНрдкреА рдиреНрдпреВ рдИрдпрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╛рдХреНрдпрд╛рдВрд╢ред рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдпрд╣ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдЖрдХреГрддрд┐ рд╡рд┐рдЬреНрдЮрд╛рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХреАрд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдпрдерд╛рд╕рдВрднрд╡ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╢рдмреНрдж рд░реВрдкреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реА рд╕реВрдЪреА:

рдпрд╣ рд╕рдм рд╣реИ, рдкрддрд┐ рдпрд╛ рдкрддреНрдиреА рдиреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣рд╛рдереЛрдВ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкрд╛рд░реНрд╕рд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рджреМрдбрд╝рддреЗ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рд╣рдо "рдПрдиреНрдЯреНрд░рд╛рдкреА рдореЗрдВ рд╡реГрджреНрдзрд┐" рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рддреЗ рд╣реИрдВ:


рдбреЗрдЯрд╛ рдХрд╛ рдЕрд╡рд▓реЛрдХрди


рдирдП рд╕рд╛рд▓ рдХреЗ рдкрд╣рд▓реЗ рджрд┐рди рд╢реБрдХреНрд░рд╡рд╛рд░ рд╕реЗ рд▓реЗрдХрд░ рд╕реЛрдорд╡рд╛рд░ рддрдХ рдХрд┐рд╕реА рдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рд╣реЗред рдЫреБрдЯреНрдЯреА рдмреАрдд рдЪреБрдХреА рд╣реИ, рдкрд╛рд░реНрд╕рд░ рдХреЛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ "рдХреИрдЪ" рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрд▓ 10 рд╣рдЬрд╛рд░ рдЯреНрд╡реАрдЯред рдЯреНрд╡рд┐рдЯрд░ рдЬрд┐рдпреЛрдЯреИрдЧ рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИрдВред рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ "рд▓рд┐рдВрдХ - рдЕрдХреНрд╖рд╛рдВрд╢ - рджреЗрд╢рд╛рдВрддрд░ - рд╕рдордп рдЯрд┐рдХрдЯ" рдлреЙрд░реНрдо рдХреЗ .csv рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдбрдВрдк рдлреЗрдВрдХ рджрд┐рдпрд╛ред рд╣рдо рдЖрд░ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ:
 twits <- read.csv2('ny_tweets.csv', header=F) colnames(twits) <- c('Link', 'Longitude', 'Latitude', 'Timestamp') twits$Timestamp <- strptime(twits$Timestamp, format='%Y-%m-%d %H:%M:%S') twits$Latitude <- round(as.numeric(as.character(twits$Latitude)), digits=1) twits$Longitude <- round(as.numeric(as.character(twits$Longitude)), digits=1) twits$Longitude <- sapply(twits$Longitude, function(x){ if(x < (-169)){ x<-360+x } else {x} }) 

рд╣рдо рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЙрдкрдпреБрдХреНрдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдХреНрд╖рд╛рдВрд╢ рдФрд░ рджреЗрд╢рд╛рдВрддрд░ рдХреЗ рдмреАрдЪ - рд╣рдо рдПрдХ рдбрд┐рдЧреНрд░реА рдХреЗ рджрд╕рд╡реЗрдВ рднрд╛рдЧ рдкрд░ рдЧреНрд░рд┐рдб рдкрд░ рдЯреНрд╡рд┐рдЯрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рджреЗрдЦреЗрдВрдЧреЗред рдЕрдиреБрджреИрд░реНрдзреНрдп рдХрд╛ рдЕрдВрддрд┐рдо рд░реВрдкрд╛рдВрддрд░рдг рдЖрдЧреЗ рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдЪреБрдХреЛрдЯрдХрд╛ рдХреЗ рд╕рдВрджреЗрд╢ рдЦреЛ рди рд╕рдХреЗрдВред
рдЕрдм рд╣рдо ggplot2 рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдордп рд╡рд┐рддрд░рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:
 library('ggplot2') p <- ggplot() p <- p + geom_histogram(aes(x=twits$Timestamp, fill = ..count..), binwidth = 3600) p <- p + ylab('') + xlab(' ( )') p <- p + theme(legend.position = 'none') p <- p + ggtitle(expression(' "" ')) p 


рд╕рдм рдХреБрдЫ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рджрд┐рдЦрддрд╛ рд╣реИ, рдЬреЛ рд╕реБрдЦрдж рд╣реИред рд╣рдо рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдирдХреНрд╢рд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛


Ggplot2 рдЬрд▓реНрджреА рд╕реЗ рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рдФрд░ рдЖрдХрд░реНрд╖рдХ рд░реЗрдЦрд╛рдВрдХрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдореГрджреНрдз рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдкреНрд░рд▓реЗрдЦрди: ggplot рдбреЙрдХреНрд╕ ред
рдирдХреНрд╢рд╛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо geom_polygon рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рд╣рдореЗрдВ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░ рдмрд╣реБрднреБрдЬ рдЦреАрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рджреЗрд╢реЛрдВ рдХреЗ рдХрдВрдЯреНрд░реЛрд▓реНрд╕ рдХреЛ рдореИрдкреНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред "рдЖрд░ рдореЗрдВ рдЕрдЪреНрдЫреЗ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдирдХреНрд╢реЗ рдХреИрд╕реЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВ" рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкреНрд░рддрд┐рдкрд╛рджрди рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдо рд╡рд░реНрдгрд┐рдд рд╡рд┐рдХрд▓реНрдк рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ "рд╕реБрдВрджрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдЪрд╛рд░реЛрдВ" рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
 #    # countries -    ,    library('maps') full_map <- map_data('world') table(full_map$region) need.map <- subset(full_map, region %in% countries & long>-25 & long<190 & lat>25) #   p <- ggplot() p <- p + geom_polygon(aes(x=need.map$long, y=need.map$lat, group = need.map$group), colour='white', fill='grey20', alpha=.5) #  ""     " " # cities -  dataframe  "  -  - " p <- p + geom_point(aes(cities$Long, cities$Lat), colour='skyblue', size=1.5) #    , ,     ,   p <- p + theme(axis.line=element_blank(),axis.text.x=element_blank(), axis.text.y=element_blank(),axis.ticks=element_blank(), axis.title.x=element_blank(), axis.title.y=element_blank(), legend.position = 'none', text=element_text(family='mono', size=20, face='bold', colour='dodgerblue3') ) p <- p + scale_x_continuous(limits = c(-15, 190)) p <- p + scale_y_continuous(limits = c(30, 82)) p <- p + ggtitle(expression('#HappyNewYear in Russian Twitter - 2013')) 

рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рддрд╕реНрд╡реАрд░ рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдирд╛ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдШрдбрд╝реА рдХреЛ рдлреНрд░реЗрдо рдореЗрдВ рд▓рдЧрд╛рдПрдВред рдпрд╣рд╛рдВ рдПрдХ рдШрдбрд╝реА рдХреЗ рд╕рд╛рде рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдХрд▓реНрдк рд╣реИ: R рдореЗрдВ ggplot2 (рдФрд░ ffmpeg) рдХреЗ рд╕рд╛рде рдПрдХ рдПрдирд┐рдореЗрдЯреЗрдб рдШрдбрд╝реА рдмрдирд╛рдПрдВ ред рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдВ рдзреНрд░реБрд╡реАрдп рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕рдмрдЧреНрд░рд╛рдл рдмрдирд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢рд░реАрд░ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЕрдкрдиреА рдЦреБрдж рдХреА "рдмрд╛рдЗрдХ" рдмрдирд╛рдирд╛ рд╣реИред рд╣рдо рдХреЗрдВрджреНрд░ рдФрд░ рд╡реНрдпрд╛рд╕ рдореЗрдВ рд╕рд░реНрдХрд▓ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рд▓реЗрддреЗ рд╣реИрдВ ( рдпрд╣рд╛рдВ рдЭрд╛рдВрдХрддреЗ рд╣реИрдВ ):
 draw.circle <- function(center,diameter=1, npoints = 100){ r = diameter / 2 tt <- seq(0,2*pi,length.out = npoints) xx <- center[1] + r * cos(tt) yy <- center[2] + r * sin(tt) * roundcoef return(data.frame(x = xx, y = yy)) } 

рдЕрдм рд╣рдо рддреАрди рд╣рд▓рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд┐рдВрджреБрдУрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ: рдПрдХ рд╕рдлреЗрдж рдкреГрд╖реНрдарднреВрдорд┐, рдПрдХ рдЧреНрд░реЗ "рд╢реАрд░реНрд╖" рдкреГрд╖реНрдарднреВрдорд┐ рдФрд░ рд╕рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрдХрд▓ рдореЗрдВ 12 рдЕрдВрдХред
 curtime <- c(as.numeric(format(frame.time, '%H')), as.numeric(format(frame.time, '%M'))) clock.center <- c(180, 35) circdat <- draw.circle(clock.center, diameter=20) circdat2 <- draw.circle(clock.center, diameter=19.7) circdat3 <- draw.circle(clock.center, diameter=18, npoints=13) 

рд╣рдо рддреАрд░реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ:
 arrow.r = c(5.5,8.8) #   if(curtime[1]>=12){curtime[1]=curtime[1]-12} hourval <- pi*(.5 - (curtime[1]+(curtime[2]/60))/6) minval <- pi*(.5 - curtime[2]/30) hour.x <- clock.center[1] + arrow.r[1] * cos(hourval) hour.y <- clock.center[2] + arrow.r[1] * sin(hourval) minute.x <- clock.center[1] + arrow.r[2] * cos(minval) minute.y <- clock.center[2] + arrow.r[2] * sin(minval) 

рдШрдбрд╝реА рдЦреАрдВрдЪреЗрдВ (рдлрд╝рдВрдХреНрд╢рди geom_polygon, geom_segment, geom_point):
 #  :     p <- p + geom_polygon(aes(x=circdat$x,y=circdat$y), colour='grey100', fill='grey100', alpha = .5) p <- p + geom_polygon(aes(x=circdat2$x,y=circdat2$y), colour='grey80', fill='grey80', alpha = .5) p <- p + geom_point(aes(circdat3$x, circdat3$y), colour='skyblue') #  , , ""   p <- p + geom_segment(aes(x=clock.center[1], y=clock.center[2], xend=hour.x, yend=hour.y), size=3, colour='dodgerblue3') p <- p + geom_segment(aes(x=clock.center[1], y=clock.center[2], xend=minute.x, yend=minute.y), size=1.5, colour='dodgerblue4') p <- p + geom_point(aes(clock.center[1], clock.center[2]), colour='blue4') 

рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реБрдЖ (рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ "рдЧрддрд┐рд╡рд┐рдзрд┐" рдкрд░ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдорд╛рд╕реНрдХреЛ рдФрд░ рдЗрд╕рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ):


рдлреНрд░реЗрдо рдбреНрд░рд╛ рдХрд░реЗрдВ


рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ - рдЯреНрд╡реАрдЯ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рд╕рдордп рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ред рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдо рдлрд╝реНрд░реЗрдо рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ: рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╣рдо 1 рдлреНрд░реЗрдо рдХрд╛ рд╕рдордп, рдЖрдЦрд┐рд░реА рдлреНрд░реЗрдо рдХрд╛ рд╕рдордп рдФрд░ рдЖрд╕рдиреНрди рдлреНрд░реЗрдо рдХреЗ рдмреАрдЪ рдХреЗ рд╕рдордп рдХрд╛ рдЕрдВрддрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдлреНрд░реЗрдо рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдЖрд░ рдореЗрдВ рдХреА рдЬрд╛рдПрдЧреАред рдЕрдЧрд▓рд╛ 1 рд╕реЗ рдЕрдВрддрд┐рдо рдлреНрд░реЗрдо рддрдХ рдХрд╛ рдЪрдХреНрд░ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдореЗрдВ, "рд╡рд░реНрддрдорд╛рди" рд╕рдордп рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рдПрдЧреАред рдЕрдЧрд▓рд╛, рд╣рдо рдореВрд▓ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдЯреНрд╡реАрдЯреНрд╕ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ ("рд╡рд░реНрддрдорд╛рди" рдлреНрд░реЗрдо рд╕рдордп - "рд╡рд░реНрддрдорд╛рди" рдлреНрд░реЗрдо рд╕рдордп) рд╕реЗ 30 рдорд┐рдирдЯ рдкрд╣рд▓реЗ рдЖрддреЗ рд╣реИрдВред
 start.date <- '2012-12-31 00:00:00' finish.date <- '2013-01-01 12:00:00' seconds.in.frame <- 30 start.date <- strptime(start.date, format='%Y-%m-%d %H:%M:%S') finish.date <- strptime(finish.date, format='%Y-%m-%d %H:%M:%S') frames <- as.numeric(difftime(finish.date, start.date, units='secs'))/seconds.in.frame for(i in 1:frames){ frame.time <- start.date + i*seconds.in.frame frame.twits <- subset(twits, Timestamp <= frame.time & Timestamp > frame.time - ma.period) ... 

рдЕрдЧрд▓рд╛, рд╣рдо рдЖрдХрд╕реНрдорд┐рдХ рддрд╛рд▓рд┐рдХрд╛ "рдЕрдХреНрд╖рд╛рдВрд╢ - рджреЗрд╢рд╛рдВрддрд░" рдмрдирд╛рддреЗ рд╣реИрдВ (рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдЕрдХреНрд╖рд╛рдВрд╢ рдФрд░ рджреЗрд╢рд╛рдВрддрд░ рдорд╛рди рдкрд╣рд▓реЗ рдПрдХ рд╕реЗ рджрд╕рд╡реЗрдВ рддрдХ рдЪрдХреНрдХрд░ рд▓рдЧрд╛рддреЗ рд╣реБрдП рдирд┐рд░рдВрддрд░ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЧрдП рдереЗ)ред рдФрд░ рд╣рдо 3 рдХреЙрд▓рдо рдХреЗ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдореЗрдВ рдЖрдХрд╕реНрдорд┐рдХрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ "рд╡рд┐рд╕реНрддрд╛рд░" рдХрд░рддреЗ рд╣реИрдВ: рдЕрдХреНрд╖рд╛рдВрд╢, рджреЗрд╢рд╛рдВрддрд░, рдЖрд╡реГрддреНрддрд┐ (рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдмрд┐рдВрджреБ рдкрд░ рдЯреНрд╡реАрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛)ред рд╣рдо рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЖрд╡реГрддреНрддрд┐ рд╢реВрдиреНрдп рд╣реЛрддреА рд╣реИ рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реНрдерд╛рдкрд┐рдд рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рдЬрд╛рддреЗ рд╣реИрдВред
  ... frame.twits <- melt(table(frame.twits$Latitude, frame.twits$Longitude)) colnames(frame.twits) <- c('Lat', 'Long', 'Volume') frame.twits$Lat <- as.numeric(as.character(frame.twits$Lat)) frame.twits$Long <- as.numeric(as.character(frame.twits$Long)) frame.twits <- frame.twits[frame.twits$Volume>0 & frame.twits$Long>=-25 & frame.twits$Long<=190 & frame.twits$Lat>=25 & frame.twits$Lat<=85,] ... 

рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЪрд░ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖рд╛рдВрд╢ рдФрд░ рджреЗрд╢рд╛рдВрддрд░ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ "рдкрддрди-рд╡рд┐рд╕реНрддрд╛рд░" рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рдж, рд╡реЗ рд╢реНрд░реЗрдгреАрдмрджреНрдз (рдЖрд░ рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ рдХрд╛рд░рдХ) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рдпрд╣ рдбреЙрдЯреНрд╕ рдХреЗ рд░рдВрдЧреЛрдВ рдХреА рдЧрд┐рдирддреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрдХреНрд░ рдореЗрдВ, рдкреВрд░реЗ рднрд╡рд┐рд╖реНрдп рдХреА "рдлрд┐рд▓реНрдо" рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рдЯреНрд╡реАрдЯреНрд╕ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рдорд╛рддреНрд░рд╛ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдЕрдзрд┐рдХрддрдо ( max.color ) рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рд░рдВрдЧреЛрдВ рдХреА рдЧрдгрдирд╛ рдЗрд╕рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдХреА рдЬрд╛рддреА рд╣реИ (рд▓рдШреБрдЧрдгрдХ - рдкреИрдорд╛рдиреЗ рдХреЛ "рд╕рдВрд░реЗрдЦрд┐рдд" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП):
  ... frame.colors <- round(1 + (8*log(frame.twits$Volume)/max.color), digits=0) ... 

рдЕрдм рдЖрдк рдбреЙрдЯреНрд╕ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
  ... if(nrow(frame.twits)>0){ p <- p + geom_point(aes(frame.twits$Long,frame.twits$Lat, size=frame.twits$Volume * 5), colour=twits.colors[frame.colors], alpha = .75) } ... 

рдпрд╣ рд╕рдм рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдЖрдк рдЫрд╡рд┐ рдХреЛ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓реВрдк рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ "рдЪрд┐рддреНрд░ рдХреЗ рдкреБрдирд░реЛрджреНрдзрд╛рд░" рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдлреНрд░реЗрдо рдореЗрдВ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЧрд▓рддреА рд╕реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд░рдгреА рд╕реЗ рдХрдИ рджрд░реНрдЬрдиреЛрдВ рдЯреНрд╡реАрдЯреНрд╕ рдЪреБрдиреЗ, рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рдкрд╛рда рдПрдХрддреНрд░ рдХрд┐рдП рдФрд░ рдПрдХ рдФрд░ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо - рдкреНрд░рдХрд╛рд╢рди рд╕рдордп, рдЯреНрд╡реАрдЯ рдкрд╛рда, "рдЬреАрд╡рдирдХрд╛рд▓", "рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕рдордп", "рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдХрд╛ рд╕рдордп", рд░рдВрдЧ, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдЖрдХрд╛рд░ рдФрд░ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдмрдирд╛рдИред ред рдЬреАрд╡рдирдХрд╛рд▓, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рд░рдВрдЧ рдФрд░ рдЖрдХрд╛рд░ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ "рдЗрд╖реНрдЯрддрдо" рдорд╛рдиреЛрдВ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд┐рдЪрд▓рди рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 twit.texts$x <- rnorm(nrow(twit.texts), mean = 100, sd = 30) twit.texts$y <- rnorm(nrow(twit.texts), mean = 56, sd = 15) twit.texts$size <- rnorm(nrow(twit.texts), mean = 10, sd = 2) 

рдлрд╝реНрд░реЗрдо рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдпрджрд┐ рдлреНрд░реЗрдо рдХрд╛ "рд╡рд░реНрддрдорд╛рди" рд╕рдордп рдЯреНрд╡реАрдЯ рдХреЗ "рдЬреАрд╡рдирдХрд╛рд▓" рдореЗрдВ рдирд╣реАрдВ рдЧрд┐рд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА "рдЕрд╕реНрдкрд╖реНрдЯрддрд╛" рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдореЗрдВ рдЯреНрд╡реАрдЯ "рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ" рд╣реИ, рддреЛ рдЬреАрд╡рди рдХрд╛рд▓ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рдирд┐рдХрдЯрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЯреНрд╡реАрдЯ "рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ" рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдб рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
  ... twit.texts$opacity <- as.numeric(by(twit.texts, 1:nrow(twit.texts), function(row){ if(frame.time < row$t.start | frame.time > row$t.end){ row$opacity <- 0 } else { row$opacity <- 0.7 * (1 - (abs(as.numeric(difftime(row$Timestamp, frame.time, unit='sec'))) / (row$t.delta * seconds.in.frame / 2))) } })) p <- p + geom_text(aes(x=twit.texts$x, y=twit.texts$y, label=iconv(twit.texts$Text,to='UTF-8')), colour=twit.texts$color, size=twit.texts$size, alpha = twit.texts$opacity) ... 

рдЯреЗрдХреНрд╕реНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ geom_text рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдм рдпрд╣ рд╕рдм рд╣реИред рдЖрдк рдлреНрд░реЗрдо рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓реВрдк рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  ... f.name <- as.character(i) repeat{ if(nchar(f.name) < nchar(as.character(frames))){ f.name <- paste('0', f.name, sep='') } else { break }} ggsave(p, file=paste('frames/img', f.name, '.png', sep=''), width=6.4, height=3.6, scale = 3, dpi=100) } 

F.name "рд╢реВрдиреНрдп" рдХреА рд▓рдВрдмрд╛рдИ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рддрд╛рдХрд┐ рд╕рднреА рдирд╛рдо рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдПрдХ рдореБрдЦреМрдЯрд╛ рдХреЗ рдиреАрдЪреЗ "рдлрд┐рдЯ" рд╣реЛрдВред

рд╣рдо рд╡реАрдбрд┐рдпреЛ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ


рдЕрдВрддрд┐рдо рдХреНрд▓рд┐рдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, ffmpeg рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ :
ffmpeg -f image2 -i img%04d.png -q:v 0 -vcodec mpeg4 -r 24 happynewyear.mp4
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдкреВрд░рд╛ рд╡реАрдбрд┐рдпреЛ рдПрдХрддреНрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - ggplot2 рд╕реЗ рдкреНрд░рд╛рдкреНрдд .png рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧ рдХреА рдЧрд╣рд░рд╛рдИ рд╣реЛрддреА рд╣реИред рд╢рд╛рдпрдж рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреБрдЫ рдФрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╛рдпрдерди рдЗрдореЗрдЬрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
 import os from PIL import Image path = u'/path/to/frames/' dirList=os.listdir(path) for filename in dirList: if filename[-3:] == 'png': im = Image.open(path + filename).convert('RGB') im.save(path + filename) 

рдЕрдм рд╕рднреА рдлреНрд░реЗрдо рдПрдХ рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╡реАрдбрд┐рдпреЛ рддреИрдпрд╛рд░ рд╣реИ, рдЖрдк YouTube рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ YouTube рдкреНрд░рднрд╛рд╡ рдЬреЛрдбрд╝реЗрдВ (рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдмрдВрджреВрдХ рджреАрд╡рд╛рд░ рдкрд░ рд▓рдЯрдХреА рд╣реБрдИ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдЗрд╕реЗ рд╢реВрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред
рдЕрдВрддрд┐рдо:

рдЗрд╕ рдкрд╛рда рдореЗрдВ, рдореИрдВрдиреЗ рдЖрд░-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рднреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЗ рдЙрджреНрдзрд░рдгреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдХрд╛рд░реНрдп рдХреЗ рддрд░реНрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ред рдЗрд╕рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдореИрдВ рдХрдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ: pastebin.com

рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд╛рд╕ рд╡рд┐рдХрд▓реНрдк


  1. рджрд┐рдирд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдЬрдм рдЖрдк рдХрдИ рджрд┐рдиреЛрдВ рдХреЗ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ 12 рдШрдВрдЯреЗ рдХреА рдбрд╛рдпрд▓ рдмрд╣реБрдд рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
  2. рдПрдХ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд░ рдЬреЛрдбрд╝реЗрдВ рдпрд╛ рд╕рдордп рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреА рдХреБрд▓ рдорд╛рддреНрд░рд╛ рдкрд░ рд╕рдВрднрд╛рд╡рдирд╛ рдШрдирддреНрд╡ рдХреЗ рдЧреНрд░рд╛рдл рдХреА рддрд░рд╣ рдХреБрдЫред


рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкреНрд░рд╢реНрди


  1. рдХреНрдпрд╛ рдЖрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдирдХреНрд╢реЗ рдХреЗ рд╕рд╛рде рд╕рд╛рджрдЧреА рдореЗрдВ рддреБрд▓рдиреАрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдзреБрдирд┐рдХ рднреВ-рд░рд╛рдЬрдиреАрддрд┐ рдкрд░ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рд╣реИ? рдпреВрдПрд╕рдПрд╕рдЖрд░ рдХреЗ рдмрд┐рдирд╛, рдпреВрдЧреЛрд╕реНрд▓рд╛рд╡рд┐рдпрд╛ рдФрд░ рдЪреЗрдХреЛрд╕реНрд▓реЛрд╡рд╛рдХрд┐рдпрд╛?
  2. рдореИрдВ рдмрд┐рдВрджреБ рдкреИрд▓реЗрдЯ рдХреЗ рд░рдВрдЧреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдкрд╣рд▓реЗ рдкреВрд░реЗ "рдмреЗрдХрд╛рд░" рдЪрдХреНрд░ рдХреЛ "рд░рди" рди рдХрд┐рдпрд╛ рдЬрд╛рдП?
  3. рдХреНрдпрд╛ ggplot2 рдпрд╛ ffmpeg рдХреЛ "рджреВрд░" рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рддрд╛рдХрд┐ рдлреНрд░реЗрдо рд░рдВрдЧ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реАрдХреЛрдбрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ (рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкреАрдЖрдИрдПрд▓ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рджреЗрдВ)?
  4. рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ - рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдорд╛рдирд╡реАрдп рд╡рдХреНрд░рддрд╛ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рдЕрдиреНрдп рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рд╕реБрдиреВрдВрдЧрд╛ред

рдзрдиреНрдпрд╡рд╛рдж!

рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ


  1. рдЖрд░ рдореЗрдВ рдЕрдЪреНрдЫреЗ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдирдХреНрд╢реЗ рдХреИрд╕реЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВ - рдирдХреНрд╢реЗ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирдХреНрд╢реЗ рдФрд░ ggplot2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛;
  2. R рдореЗрдВ ggplot2 (рдФрд░ ffmpeg) рдХреЗ рд╕рд╛рде рдПрдХ рдПрдирд┐рдореЗрдЯреЗрдб рдШрдбрд╝реА рдмрдирд╛рдПрдВ - R рдкрд░ рдПрдирд┐рдореЗрдЯреЗрдб рдПрдирд╛рд▓реЙрдЧ рдШрдбрд╝реА;
  3. Ggplot2 рд╡рд╛рд▓реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд╕рд░рд▓ рдбреЗрдЯрд╛ рдЦрдирди рдФрд░ рдкреНрд▓реЙрдЯрд┐рдВрдЧ рдбреЗрдЯрд╛ - рдЖрд░ рдореЗрдВ рдУрдПрд╕рдПрдо рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧред

Source: https://habr.com/ru/post/In165305/


All Articles