{"id":165305,"date":"2013-01-10T11:19:03","date_gmt":"2013-01-10T07:19:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=165305"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=165305","title":{"rendered":"<span class=\"post_title\">\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0433\u0435\u043e\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (Twitter) \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e R<\/span>"},"content":{"rendered":"<div class=\"content html_format\">\n<h5>\u00ab\u041d\u043e\u0432\u044b\u0439 \u0433\u043e\u0434 \u0448\u0430\u0433\u0430\u0435\u0442 \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0435\u00bb<\/h5>\n<p>  \u042f \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u044f\u0440\u044b\u043c \u0444\u0430\u043d\u0430\u0442\u043e\u043c \u0433\u0435\u043e\u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041e\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u042d\u0442\u043e \u0442\u043e, \u043e \u0447\u0435\u043c \u043f\u0438\u0441\u0430\u043b <a href=\"http:\/\/ru.wikipedia.org\/wiki\/%D0%91%D1%83%D1%80%D0%B4%D1%8C%D1%91,_%D0%9F%D1%8C%D0%B5%D1%80\">\u0411\u0443\u0440\u0434\u044c\u0451<\/a>, \u043d\u043e \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043b\u0438\u0448\u044c \u0432 \u0432\u0438\u0434\u0435 \u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0430. Foursquare \u0432\u043e\u043e\u0431\u0449\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043e\u0435\u0439 \u0431\u0435\u0437\u043e\u0442\u0432\u0435\u0442\u043d\u043e\u0439 \u043b\u044e\u0431\u043e\u0432\u044c\u044e. \u041d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043a\u0430\u043a-\u043d\u0438\u0431\u0443\u0434\u044c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437, \u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e Twitter.<br \/>  \u041d\u0435\u0437\u0430\u0434\u043e\u043b\u0433\u043e \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e, 2012-\u0433\u043e, \u0433\u043e\u0434\u0430 \u043c\u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u00ab\u0432\u043e\u043b\u043d\u0430\u00bb \u043d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0438\u0445 \u0442\u0432\u0438\u0442\u043e\u0432-\u043f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u043e\u043d\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0447\u0430\u0441\u043e\u0432\u044b\u0435 \u043f\u043e\u044f\u0441\u0430. \u0421\u043a\u0430\u0437\u0430\u043d\u043e \u2014 \u0441\u0434\u0435\u043b\u0430\u043d\u043e. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b: R, Python \u0438 ffmpeg.<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/393\/064\/256\/3930642567a8dd18168b595fe2ebf457.png\"\/><br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u0421\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>  \u041f\u043e\u043a\u0430 \u0441\u0443\u043f\u0440\u0443\u0433\u0430 \u0437\u0430\u043d\u044f\u043b\u0430\u0441\u044c \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u043d\u0435 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b\u0430 \u043f\u0440\u043e \u043c\u0435\u043d\u044f, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e python \u0438 <a href=\"http:\/\/pypi.python.org\/pypi\/tweetstream\">tweetstream<\/a> \u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 \u0442\u0432\u0438\u0442-\u043f\u043e\u0442\u043e\u043a\u0430 <a href=\"https:\/\/dev.twitter.com\/docs\/api\/1.1\/post\/statuses\/filter\">statuses\/filter<\/a>.  <\/p>\n<pre><code class=\"python\">import tweetstream stream = tweetstream.FilterStream('TWITTER_LOGIN', 'TWITTER_PASSWORD', track = keywords_list) for tweet in stream:     if tweet['coordinates']:     # \u0414\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u043c \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u0432\u0438\u0442\u0430 \u0432 date-time \u043e\u0431\u044a\u0435\u043a\u0442      # (\u0432 API Twitter \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f)     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')     # \u041f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u043c 4 \u0447\u0430\u0441\u0430 - &quot;\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c&quot; \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u043e\u0435     timestamp += datetime.timedelta(hours=4)     # \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0438     timestamp = datetime.datetime.strftime(timestamp, '%Y-%m-%d %H:%M:%S')     # \u041f\u0438\u0448\u0435\u043c \u0432\u0441\u0435 \u0432 \u0411\u0414     cursor.execute('INSERT INTO tweets(link, latitude, longitude, date) VALUES (&quot;http:\/\/www.twitter.com\/{0}\/status\/{1}&quot;, &quot;{2}&quot;, &quot;{3}&quot;, &quot;{4}&quot;)'.format(         tweet['user']['screen_name'],         tweet['id'],         str(tweet['coordinates']['coordinates'][0]),         str(tweet['coordinates']['coordinates'][1]),         str(tweet['created_at'])     ))     db.commit() <\/code><\/pre>\n<p>  <code>keywords_list<\/code> \u2014 \u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u043b\u043e\u0432, \u0445\u0435\u0448-\u0442\u0435\u0433\u043e\u0432 \u0438 \u0444\u0440\u0430\u0437, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f \u043a \u043f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0441 \u041d\u043e\u0432\u044b\u043c \u0433\u043e\u0434\u043e\u043c. \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 API \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043c\u043e\u0440\u0444\u043e\u043b\u043e\u0433\u0438\u044e, \u0442\u0430\u043a \u0447\u0442\u043e \u0432 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430 \u043d\u0430\u0434\u043e \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0442\u044c\u0441\u044f \u0432\u043d\u0435\u0441\u0442\u0438 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0445 \u0441\u043b\u043e\u0432\u043e\u0444\u043e\u0440\u043c. \u041c\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a:  <\/p>\n<ul>\n<li>#\u0441\u043d\u043e\u0432\u044b\u043c\u0433\u043e\u0434\u043e\u043c,<\/li>\n<li>#\u0421\u041d\u043e\u0432\u044b\u043c\u0413\u043e\u0434\u043e\u043c2013,<\/li>\n<li>#\u041d\u04132013,<\/li>\n<li>#\u0421\u041d\u0430\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u043c2013,<\/li>\n<li>#\u041d\u043e\u0432\u044b\u0439\u0413\u041e\u0414,<\/li>\n<li>#\u0421\u041d\u0430\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u043c\u041d\u043e\u0432\u044b\u043c\u0413\u043e\u0434\u043e\u043c,<\/li>\n<li>#\u041d\u041e\u0412\u041e\u0413\u041e\u0414\u041d\u0418\u0419\u0442\u0432\u0438\u0442,<\/li>\n<li>\u0441 \u043d\u043e\u0432\u044b\u043c \u0433\u043e\u0434\u043e\u043c,<\/li>\n<li>\u0441 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u043c,<\/li>\n<li>\u0441 \u043d\u043e\u0432\u044b\u043c 2013,<\/li>\n<li>\u0441 \u0433\u043e\u0434\u043e\u043c \u0437\u043c\u0435\u0438,<\/li>\n<li>\u0441 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u043c \u0433\u043e\u0434\u043e\u043c \u0437\u043c\u0435\u0438,<\/li>\n<li>\u041d\u043e\u0432\u043e\u0433\u043e \u0413\u043e\u0434\u0430,<\/li>\n<li>\u043d\u043e\u0432\u043e\u043c \u0433\u043e\u0434\u0443.<\/li>\n<\/ul>\n<p>  \u0412\u0441\u0435, \u0441\u0443\u043f\u0440\u0443\u0433\u0430 \u043e\u0431\u0440\u0430\u0442\u0438\u043b\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043b\u0438\u0448\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0440\u0443\u043a\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0430\u0440\u0441\u0435\u0440 \u0438 \u0441\u043f\u0435\u0448\u0438\u043c \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c. \u041d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u0432\u043d\u043e\u0441\u0438\u043c \u0441\u0432\u043e\u044e \u043b\u0435\u043f\u0442\u0443 \u0432 \u00ab\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438\u00bb:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/beb\/81d\/1fe\/beb81d1fe6bf96d909dfd64e0f0e8995.png\"\/><\/p>\n<h4>\u041e\u0431\u0437\u043e\u0440 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/h4>\n<p>  <s>\u041d\u043e\u0447\u044c \u0441 \u043f\u044f\u0442\u043d\u0438\u0446\u044b \u043d\u0430 \u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a<\/s> \u043f\u0435\u0440\u0432\u044b\u0435 \u0434\u043d\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u043f\u0440\u043e\u043b\u0435\u0442\u0435\u043b\u0438 \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e. \u041f\u0440\u0430\u0437\u0434\u043d\u0438\u043a \u043f\u0440\u043e\u0448\u0435\u043b, \u043f\u0430\u0440\u0441\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u00ab\u0443\u043b\u043e\u0432\u00bb. \u0412\u0441\u0435\u0433\u043e \u043d\u0430\u0431\u0440\u0430\u043b\u043e\u0441\u044c ~10 \u0442\u044b\u0441. \u0442\u0432\u0438\u0442\u043e\u0432. \u0413\u0435\u043e\u043c\u0435\u0442\u043a\u0438 \u0432 Twitter \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c\u044e. \u0414\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u044f \u0441\u043a\u0438\u043d\u0443\u043b \u0434\u0430\u043c\u043f \u0432 .csv \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432\u0438\u0434\u0430 \u00ab\u0441\u0441\u044b\u043b\u043a\u0430 \u2014 \u0448\u0438\u0440\u043e\u0442\u0430 \u2014 \u0434\u043e\u043b\u0433\u043e\u0442\u0430 \u2014 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043c\u0435\u0442\u043a\u0430\u00bb. \u0413\u0440\u0443\u0437\u0438\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432 R:  <\/p>\n<pre><code>twits &lt;- read.csv2('ny_tweets.csv', header=F) colnames(twits) &lt;- c('Link', 'Longitude', 'Latitude', 'Timestamp') twits$Timestamp &lt;- strptime(twits$Timestamp, format='%Y-%m-%d %H:%M:%S') twits$Latitude &lt;- round(as.numeric(as.character(twits$Latitude)), digits=1) twits$Longitude &lt;- round(as.numeric(as.character(twits$Longitude)), digits=1) twits$Longitude &lt;- sapply(twits$Longitude, function(x){   if(x &lt; (-169)){     x&lt;-360+x   } else {x}   }) <\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043a\u0438 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442, \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u043c \u0448\u0438\u0440\u043e\u0442\u044b \u0438 \u0434\u043e\u043b\u0433\u043e\u0442\u044b \u2014 \u0431\u0443\u0434\u0435\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0432\u0438\u0442\u0442\u0435\u0440-\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u0441\u0435\u0442\u043a\u0435 \u0432 \u043e\u0434\u043d\u0443 \u0434\u0435\u0441\u044f\u0442\u0443\u044e \u0433\u0440\u0430\u0434\u0443\u0441\u0430. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u043b\u0433\u043e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0427\u0443\u043a\u043e\u0442\u043a\u0438.<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u043c <a href=\"http:\/\/ggplot2.org\/\">ggplot2<\/a> \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438:  <\/p>\n<pre><code>library('ggplot2') p &lt;- ggplot() p &lt;- p + geom_histogram(aes(x=twits$Timestamp, fill = ..count..), binwidth = 3600) p &lt;- p + ylab('\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e') + xlab('\u0412\u0440\u0435\u043c\u044f (\u043f\u043e \u0447\u0430\u0441\u0430\u043c)') p &lt;- p + theme(legend.position = 'none') p &lt;- p + ggtitle(expression('\u0420\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 &quot;\u043d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0438\u0445&quot; \u0442\u0432\u0438\u0442\u043e\u0432')) p <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/6bd\/3e8\/b0d\/6bd3e8b0d92d05fa7354cea4759aa4ec.png\"\/><br \/>  \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u0440\u0438\u044f\u0442\u043d\u043e \u0440\u0430\u0434\u0443\u0435\u0442. \u041c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c.<\/p>\n<h4>\u041e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043a\u0430\u0440\u0442\u044b<\/h4>\n<p>  Ggplot2 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0431\u043e\u0433\u0430\u0442\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0438 \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u044b\u0445 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432. \u041f\u043e\u043b\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438: <a href=\"http:\/\/docs.ggplot2.org\">ggplot docs<\/a>.<br \/>  \u0414\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043a\u0430\u0440\u0442\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e geom_polygon, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0443\u044e \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u044b \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c. \u041a\u043e\u043d\u0442\u0443\u0440\u044b \u0441\u0442\u0440\u0430\u043d \u0431\u0443\u0434\u0443\u0442 \u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <a href=\"http:\/\/cran.r-project.org\/web\/packages\/maps\/index.html\">maps<\/a>. \u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0431\u044b\u043b \u0432\u0437\u044f\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432 \u0437\u0430\u043c\u0435\u0442\u043a\u0435 <a href=\"https:\/\/uchicagoconsulting.wordpress.com\/tag\/r-ggplot2-maps-visualization\/\">\u00abHow to draw good looking maps in R\u00bb<\/a>. \u041d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0438\u0434\u043e\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043f\u043e\u0434\u0433\u043e\u043d\u044f\u044f \u0435\u0433\u043e \u043f\u043e\u0434 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043d\u0443\u0436\u0434\u044b \u0438 \u00ab\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e\u043c\u00bb:  <\/p>\n<pre><code># \u0413\u0440\u0443\u0437\u0438\u043c \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 # countries - \u0432\u0435\u043a\u0442\u043e\u0440 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0441\u0442\u0440\u0430\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c library('maps') full_map &lt;- map_data('world') table(full_map$region) need.map &lt;- subset(full_map, region %in% countries & long&gt;-25 & long&lt;190 & lat&gt;25)  # \u0420\u0438\u0441\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0443\u0440\u044b p &lt;- ggplot() p &lt;- p + geom_polygon(aes(x=need.map$long, y=need.map$lat, group = need.map$group), colour='white', fill='grey20', alpha=.5)  # \u0420\u0438\u0441\u0443\u0435\u043c &quot;\u0442\u043e\u0447\u043a\u0438&quot; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0433\u043e\u0440\u043e\u0434\u043e\u0432 \u0434\u043b\u044f &quot;\u043e\u0436\u0438\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0439\u0437\u0430\u0436\u0430&quot; # cities - \u044d\u0442\u043e dataframe \u0432\u0438\u0434\u0430 &quot;\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0433\u043e\u0440\u043e\u0434\u0430 - \u0448\u0438\u0440\u043e\u0442\u0430 - \u0434\u043e\u043b\u0433\u043e\u0442\u0430&quot; p &lt;- p + geom_point(aes(cities$Long, cities$Lat), colour='skyblue', size=1.5)  # \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043a \u043e\u0441\u044f\u043c, \u043b\u0435\u0433\u0435\u043d\u0434\u0443, \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a p &lt;- 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 &lt;- p + scale_x_continuous(limits = c(-15, 190)) p &lt;- p + scale_y_continuous(limits = c(30, 82)) p &lt;- p + ggtitle(expression('#HappyNewYear in Russian Twitter - 2013')) <\/code><\/pre>\n<p>  \u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043a\u0430\u043a-\u0442\u043e \u043e\u0436\u0438\u0432\u0438\u0442\u044c \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438. \u041f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0432 \u043a\u0430\u0434\u0440 \u0447\u0430\u0441\u044b. \u0412\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u0447\u0430\u0441\u0430\u043c\u0438: <a href=\"http:\/\/www.drewconway.com\/zia\/?p=2800\">Create an animated clock in R with ggplot2 (and ffmpeg)<\/a>. \u041d\u043e \u0442\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u044f\u0440\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u0442.\u043a. \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043b\u0438\u0448\u043d\u0438\u0445 \u0442\u0435\u043b\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0439 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u0433\u0440\u0430\u0444\u0438\u043a\u0430. \u041f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u00ab\u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u00bb. \u0411\u0435\u0440\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0446\u0435\u043d\u0442\u0440\u0443 \u0438 \u0434\u0438\u0430\u043c\u0435\u0442\u0440\u0443 (\u043f\u043e\u0434\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e <a href=\"http:\/\/stackoverflow.com\/questions\/6862742\/draw-a-circle-with-ggplot2\">\u0437\u0434\u0435\u0441\u044c<\/a>):  <\/p>\n<pre><code>draw.circle &lt;- function(center,diameter=1, npoints = 100){   r = diameter \/ 2   tt &lt;- seq(0,2*pi,length.out = npoints)   xx &lt;- center[1] + r * cos(tt)   yy &lt;- center[2] + r * sin(tt) * roundcoef   return(data.frame(x = xx, y = yy)) } <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u0442\u0440\u0435\u0445 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0435\u0439: \u0431\u0435\u043b\u044b\u0439 \u0444\u043e\u043d-\u0437\u0430\u0434\u043d\u0438\u043a, \u0441\u0435\u0440\u044b\u0439 \u00ab\u0432\u0435\u0440\u0445\u043d\u0438\u0439\u00bb \u0444\u043e\u043d \u0438 12 \u0442\u043e\u0447\u0435\u043a \u043d\u0430 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0447\u0430\u0441\u043e\u0432\u044b\u0445 \u0437\u0430\u0441\u0435\u0447\u0435\u043a:  <\/p>\n<pre><code>curtime &lt;- c(as.numeric(format(frame.time, '%H')), as.numeric(format(frame.time, '%M'))) clock.center &lt;- c(180, 35) circdat &lt;- draw.circle(clock.center, diameter=20) circdat2 &lt;- draw.circle(clock.center, diameter=19.7) circdat3 &lt;- draw.circle(clock.center, diameter=18, npoints=13) <\/code><\/pre>\n<p>  \u0421\u0447\u0438\u0442\u0430\u0435\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0435\u043b\u043e\u043a:  <\/p>\n<pre><code>arrow.r = c(5.5,8.8) # \u0414\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u0435\u043b\u043e\u043a if(curtime[1]&gt;=12){curtime[1]=curtime[1]-12} hourval &lt;- pi*(.5 - (curtime[1]+(curtime[2]\/60))\/6) minval &lt;- pi*(.5 - curtime[2]\/30) hour.x &lt;- clock.center[1] + arrow.r[1] * cos(hourval) hour.y &lt;- clock.center[2] + arrow.r[1] * sin(hourval) minute.x &lt;- clock.center[1] + arrow.r[2] * cos(minval) minute.y &lt;- clock.center[2] + arrow.r[2] * sin(minval) <\/code><\/pre>\n<p>  \u0420\u0438\u0441\u0443\u0435\u043c \u0447\u0430\u0441\u044b (\u0444\u0443\u043d\u043a\u0446\u0438\u0438 geom_polygon, geom_segment, geom_point):  <\/p>\n<pre><code># \u0422\u0440\u0438 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438: \u0444\u043e\u043d \u0438 \u0447\u0430\u0441\u043e\u0432\u044b\u0435 \u0437\u0430\u0441\u0435\u0447\u043a\u0438 p &lt;- p + geom_polygon(aes(x=circdat$x,y=circdat$y), colour='grey100', fill='grey100', alpha = .5) p &lt;- p + geom_polygon(aes(x=circdat2$x,y=circdat2$y), colour='grey80', fill='grey80', alpha = .5) p &lt;- p + geom_point(aes(circdat3$x, circdat3$y), colour='skyblue')  # \u0427\u0430\u0441\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0435\u043b\u043a\u0430, \u043c\u0438\u043d\u0443\u0442\u043d\u0430\u044f, &quot;\u0433\u0432\u043e\u0437\u0434\u0438\u043a&quot; \u043e\u0441\u0438 \u0441\u0442\u0440\u0435\u043b\u043e\u043a p &lt;- p + geom_segment(aes(x=clock.center[1], y=clock.center[2], xend=hour.x, yend=hour.y), size=3, colour='dodgerblue3') p &lt;- p + geom_segment(aes(x=clock.center[1], y=clock.center[2], xend=minute.x, yend=minute.y), size=1.5, colour='dodgerblue4') p &lt;- p + geom_point(aes(clock.center[1], clock.center[2]), colour='blue4') <\/code><\/pre>\n<p>  \u0412\u043e\u0442 \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c (\u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u0435\u0449\u0435 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u00ab\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438\u00bb, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u041c\u043e\u0441\u043a\u0432\u0435 \u0438 \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044f\u043c):<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/e44\/511\/327\/e445113273e15702e846286511ccbbc2.png\"\/><\/p>\n<h4>\u041f\u0440\u043e\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u0434\u0440\u044b<\/h4>\n<p>  \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u2014 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0442\u0432\u0438\u0442\u0430. \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u043a\u0430\u0434\u0440\u043e\u0432. \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a: \u0431\u0443\u0434\u0435\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f 1-\u0433\u043e \u043a\u0430\u0434\u0440\u0430, \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c\u0438 \u043a\u0430\u0434\u0440\u0430\u043c\u0438. \u041e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0430\u0434\u0440\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 R. \u0414\u0430\u043b\u0435\u0435 \u2014 \u0446\u0438\u043a\u043b \u043e\u0442 1 \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043a\u0430\u0434\u0440\u0430. \u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u043a\u0430\u0434\u0440\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c\u0441\u044f \u00ab\u0442\u0435\u043a\u0443\u0449\u0435\u0435\u00bb \u0432\u0440\u0435\u043c\u044f. \u0414\u0430\u043b\u0435\u0435 \u2014 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0431\u0438\u0440\u0430\u0442\u044c \u0442\u0432\u0438\u0442\u044b, \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0432 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b (30 \u043c\u0438\u043d\u0443\u0442 \u0434\u043e \u00ab\u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e\u00bb \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a\u0430\u0434\u0440\u0430 \u2014 \u00ab\u0442\u0435\u043a\u0443\u0449\u0435\u0435\u00bb \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u0434\u0440\u0430).  <\/p>\n<pre><code>start.date &lt;- '2012-12-31 00:00:00' finish.date &lt;- '2013-01-01 12:00:00' seconds.in.frame &lt;- 30 start.date &lt;- strptime(start.date, format='%Y-%m-%d %H:%M:%S') finish.date &lt;- strptime(finish.date, format='%Y-%m-%d %H:%M:%S') frames &lt;- as.numeric(difftime(finish.date, start.date, units='secs'))\/seconds.in.frame for(i in 1:frames){   frame.time &lt;- start.date + i*seconds.in.frame   frame.twits &lt;- subset(twits, Timestamp &lt;= frame.time & Timestamp &gt; frame.time - ma.period)   ... <\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u00ab\u0448\u0438\u0440\u043e\u0442\u0430 \u2014 \u0434\u043e\u043b\u0433\u043e\u0442\u0430\u00bb (\u043d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0448\u0438\u0440\u043e\u0442\u044b \u0438 \u0434\u043e\u043b\u0433\u043e\u0442\u044b \u0431\u044b\u043b\u0438 \u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u044b \u0438\u0437 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0445 \u0432 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043f\u0443\u0442\u0435\u043c \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0434\u043e \u043e\u0434\u043d\u043e\u0439 \u0434\u0435\u0441\u044f\u0442\u043e\u0439). \u0418 \u00ab\u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u00bb \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432 dataframe \u0438\u0437 3 \u043a\u043e\u043b\u043e\u043d\u043e\u043a: \u0448\u0438\u0440\u043e\u0442\u0430, \u0434\u043e\u043b\u0433\u043e\u0442\u0430, \u0447\u0430\u0441\u0442\u043e\u0442\u0430 (\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0432\u0438\u0442\u043e\u0432 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435). \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0440\u0430\u0432\u043d\u0430 \u043d\u0443\u043b\u044e \u0438\u043b\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0437\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b.  <\/p>\n<pre><code>  ...   frame.twits &lt;- melt(table(frame.twits$Latitude, frame.twits$Longitude))   colnames(frame.twits) &lt;- c('Lat', 'Long', 'Volume')   frame.twits$Lat &lt;- as.numeric(as.character(frame.twits$Lat))   frame.twits$Long &lt;- as.numeric(as.character(frame.twits$Long))   frame.twits &lt;- frame.twits[frame.twits$Volume&gt;0 &      frame.twits$Long&gt;=-25 & frame.twits$Long&lt;=190 &      frame.twits$Lat&gt;=25 & frame.twits$Lat&lt;=85,]   ... <\/code><\/pre>\n<p>  \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0448\u0438\u0440\u043e\u0442\u044b \u0438 \u0434\u043e\u043b\u0433\u043e\u0442\u044b \u0432 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u00ab\u0441\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f-\u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f\u00bb \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043d\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0430\u043b\u044c\u043d\u044b\u0435 (factor \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 R).<br \/>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0446\u0432\u0435\u0442\u0430 \u0442\u043e\u0447\u0435\u043a. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043c \u0442\u0432\u0438\u0442\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0437\u0430 \u0432\u0435\u0441\u044c \u0431\u0443\u0434\u0443\u0449\u0438\u0439 \u00ab\u0444\u0438\u043b\u044c\u043c\u00bb. \u041e\u043d \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0437\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c (<code>max.color<\/code>), \u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0433\u043e \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0446\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a (\u043b\u043e\u0433\u0430\u0440\u0438\u0444\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u2014 \u0447\u0442\u043e\u0431\u044b \u00ab\u0432\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c\u00bb \u0448\u043a\u0430\u043b\u0443):  <\/p>\n<pre><code>  ...   frame.colors &lt;- round(1 + (8*log(frame.twits$Volume)\/max.color), digits=0)   ... <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0447\u043a\u0438 (\u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c):  <\/p>\n<pre><code>  ...   if(nrow(frame.twits)&gt;0){     p &lt;- p + geom_point(aes(frame.twits$Long,frame.twits$Lat, size=frame.twits$Volume * 5),      colour=twits.colors[frame.colors], alpha = .75)   }   ... <\/code><\/pre>\n<p>  \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u0432\u0441\u0435, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0446\u0438\u043a\u043b, \u043d\u043e \u0434\u043b\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u00ab\u043e\u0436\u0438\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438\u00bb \u044f \u0440\u0435\u0448\u0438\u043b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u043a\u0430\u0434\u0440. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0437 \u043e\u0431\u0449\u0435\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0442\u0432\u0438\u0442\u043e\u0432, \u0434\u043b\u044f \u043d\u0438\u0445 \u0441\u043e\u0431\u0440\u0430\u043b \u0442\u0435\u043a\u0441\u0442\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u0441\u043e\u0437\u0434\u0430\u043b \u0435\u0449\u0435 \u043e\u0434\u0438\u043d dataframe \u2014 \u0432\u0440\u0435\u043c\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0442\u0435\u043a\u0441\u0442 \u0442\u0432\u0438\u0442\u0430, \u00ab\u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438\u00bb, \u00ab\u0432\u0440\u0435\u043c\u044f \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f\u00bb, \u00ab\u0432\u0440\u0435\u043c\u044f \u0438\u0441\u0447\u0435\u0437\u043d\u043e\u0432\u0435\u043d\u0438\u044f\u00bb, \u0446\u0432\u0435\u0442, \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u0440\u0430\u0437\u043c\u0435\u0440 \u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c. \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438, \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u0446\u0432\u0435\u0442 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u043e\u0442 \u00ab\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445\u00bb \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439:  <\/p>\n<pre><code>twit.texts$x &lt;- rnorm(nrow(twit.texts), mean = 100, sd = 30) twit.texts$y &lt;- rnorm(nrow(twit.texts), mean = 56, sd = 15) twit.texts$size &lt;- rnorm(nrow(twit.texts), mean = 10, sd = 2) <\/code><\/pre>\n<p>  \u0412\u044b\u0432\u043e\u0434 \u0432 \u043a\u0430\u0434\u0440 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438: \u0435\u0441\u043b\u0438 \u00ab\u0442\u0435\u043a\u0443\u0449\u0435\u0435\u00bb \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u0434\u0440\u0430 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432\u043e \u00ab\u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438\u00bb \u0442\u0432\u0438\u0442\u0430, \u0435\u0433\u043e \u00ab\u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u00bb (opacity) \u0440\u0430\u0432\u043d\u0430 \u043d\u0443\u043b\u044e. \u0415\u0441\u043b\u0438 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0432\u0438\u0442 \u00ab\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442\u00bb \u2014 \u0435\u0433\u043e \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0431\u043b\u0438\u0437\u043e\u0441\u0442\u0438 \u043a \u0446\u0435\u043d\u0442\u0440\u0443 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0442\u0432\u0438\u0442 \u00ab\u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f\u00bb \u0438 \u043f\u043b\u0430\u0432\u043d\u043e \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442. \u0412 \u043a\u043e\u0434\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:  <\/p>\n<pre><code>  ...   twit.texts$opacity &lt;- as.numeric(by(twit.texts, 1:nrow(twit.texts), function(row){   if(frame.time &lt; row$t.start | frame.time &gt; row$t.end){     row$opacity &lt;- 0   } else {     row$opacity &lt;- 0.7 *      (1 - (abs(as.numeric(difftime(row$Timestamp, frame.time, unit='sec'))) \/      (row$t.delta * seconds.in.frame \/ 2)))   }   }))   p &lt;- 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)   ... <\/code><\/pre>\n<p>  \u0412\u044b\u0432\u043e\u0434 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e geom_text.<br \/>  \u0412\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0435. \u041c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043a\u0430\u0434\u0440 \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0446\u0438\u043a\u043b.  <\/p>\n<pre><code>  ...   f.name &lt;- as.character(i)   repeat{     if(nchar(f.name) &lt; nchar(as.character(frames))){     f.name &lt;- 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) } <\/code><\/pre>\n<p>  \u0414\u043b\u0438\u043d\u0430 f.name \u00ab\u043d\u0443\u043b\u044f\u043c\u0438\u00bb \u043f\u043e\u0434\u0433\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0438\u043c\u0435\u043d\u0430 \u00ab\u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0438\u00bb \u043f\u043e\u0434 \u043e\u0434\u043d\u0443 \u043c\u0430\u0441\u043a\u0443 \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.<\/p>\n<h4>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0438\u0434\u0435\u043e<\/h4>\n<p>  \u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u043b\u0438\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f <a href=\"http:\/\/ffmpeg.org\/\">ffmpeg<\/a>:<br \/>  <code>ffmpeg -f image2 -i img%04d.png -q:v 0 -vcodec mpeg4 -r 24 happynewyear.mp4<\/code><br \/>  \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e. \u0412\u0438\u0434\u0435\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u2014 \u0443 .png \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0445 \u043e\u0442 ggplot2, \u0440\u0430\u0437\u043d\u0430\u044f \u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u0446\u0432\u0435\u0442\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u043d\u043e \u044f \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f <a href=\"http:\/\/www.pythonware.com\/products\/pil\/\">Python Imaging Library<\/a>:  <\/p>\n<pre><code class=\"python\">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) <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0435 \u043a\u0430\u0434\u0440\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d \u0440\u043e\u043b\u0438\u043a. \u0412\u0438\u0434\u0435\u043e \u0433\u043e\u0442\u043e\u0432\u043e, \u043c\u043e\u0436\u043d\u043e \u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0430 YouTube. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0430\u0440\u0443 YouTube-\u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 (\u0432\u0435\u0434\u044c \u0435\u0441\u043b\u0438 \u0440\u0443\u0436\u044c\u0435 \u0432\u0438\u0441\u0438\u0442 \u043d\u0430 \u0441\u0442\u0435\u043d\u0435, \u0438\u0437 \u043d\u0435\u0433\u043e \u043d\u0430\u0434\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u0441\u0442\u0440\u0435\u043b\u0438\u0432\u0430\u0442\u044c).<br \/>  \u0424\u0438\u043d\u0430\u043b:<br \/>  <iframe loading=\"lazy\" width=\"560\" height=\"349\" src=\"http:\/\/www.youtube.com\/embed\/zktB5F4dtiM\" frameborder=\"0\" allowfullscreen><\/iframe><br \/>  \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0435 \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u043d\u0435 \u0432\u0441\u0435 \u0447\u0430\u0441\u0442\u0438 R-\u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u0430 \u0447\u0430\u0441\u0442\u044c \u0446\u0438\u0442\u0430\u0442 \u0438\u0437 \u043a\u043e\u0434\u0430 \u0441\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0430\u043d\u0430 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u0440\u0435\u0448\u0430\u0435\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0430 \u043d\u0435 \u043f\u043e \u043b\u043e\u0433\u0438\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441 \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432: <a href=\"http:\/\/pastebin.com\/eWRwtE9J\">pastebin.com<\/a><\/p>\n<h4>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f<\/h4>\n<p>  <\/p>\n<ol>\n<li>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0443, \u0442.\u043a. 12-\u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0446\u0438\u0444\u0435\u0440\u0431\u043b\u0430\u0442 \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u0435\u043d, \u043a\u043e\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u0442\u043e\u043a.<\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u043e\u0441\u043a\u0443 \u0441 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 \u0438\u043b\u0438 \u0447\u0435\u043c-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u043e\u0431\u0449\u0435\u043c\u0443 \u043e\u0431\u044a\u0435\u043c\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/li>\n<\/ol>\n<h4>\u0412\u043e\u043f\u0440\u043e\u0441\u044b \u043a \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443<\/h4>\n<p>  <\/p>\n<ol>\n<li>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u0434\u043b\u044f R \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c\u0430\u044f \u043f\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0435 \u0441 maps, \u043d\u043e \u0441 \u0431\u043e\u043b\u0435\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043f\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0433\u0435\u043e\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435? \u0411\u0435\u0437 USSR, Yugoslavia \u0438 Czechoslovakia?<\/li>\n<li>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u043e\u0432 \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u0442\u043e\u0447\u0435\u043a, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u00ab\u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0442\u044c\u00bb \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0435\u0441\u044c \u0446\u0438\u043a\u043b \u00ab\u0432\u0445\u043e\u043b\u043e\u0441\u0442\u0443\u044e\u00bb?<\/li>\n<li>\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u00ab\u043f\u043e\u0431\u043e\u0440\u043e\u0442\u044c\u00bb ggplot2 \u0438\u043b\u0438 ffmpeg, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438 \u0446\u0432\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u043a\u0430\u0434\u0440\u043e\u0432 (\u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c PIL \u0438\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430)?<\/li>\n<li>\u0418 \u0432\u043e\u043e\u0431\u0449\u0435 \u2014 \u0432\u044b\u0441\u043b\u0443\u0448\u0430\u044e \u0434\u0440\u0443\u0433\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0433\u0443\u043c\u0430\u043d\u0438\u0442\u0430\u0440\u043d\u0443\u044e \u043a\u0440\u0438\u0432\u043e\u0440\u0443\u043a\u043e\u0441\u0442\u044c \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/li>\n<\/ol>\n<p>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e!<\/p>\n<h4>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/h4>\n<p>  <\/p>\n<ol>\n<li><a href=\"https:\/\/uchicagoconsulting.wordpress.com\/tag\/r-ggplot2-maps-visualization\/\">How to draw good looking maps in R<\/a> \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 maps \u0438 ggplot2 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043a\u0430\u0440\u0442;<\/li>\n<li><a href=\"http:\/\/www.drewconway.com\/zia\/?p=2800\">Create an animated clock in R with ggplot2 (and ffmpeg)<\/a> \u2014 \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0435 \u0447\u0430\u0441\u044b \u043d\u0430 R;<\/li>\n<li><a href=\"http:\/\/rpsychologist.com\/parsing-data-from-a-text-file-and-plotting-where-people-live-using-ggplot2-and-openstreetmaps\/\">Simple data mining and plotting data on a map with ggplot2<\/a> \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 OSM-\u043a\u0430\u0440\u0442 \u0432 R.<\/li>\n<\/ol>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/165305\/\"> http:\/\/habrahabr.ru\/post\/165305\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">\n<h5>\u00ab\u041d\u043e\u0432\u044b\u0439 \u0433\u043e\u0434 \u0448\u0430\u0433\u0430\u0435\u0442 \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0435\u00bb<\/h5>\n<p>  \u042f \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u044f\u0440\u044b\u043c \u0444\u0430\u043d\u0430\u0442\u043e\u043c \u0433\u0435\u043e\u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u041e\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u042d\u0442\u043e \u0442\u043e, \u043e \u0447\u0435\u043c \u043f\u0438\u0441\u0430\u043b <a href=\"http:\/\/ru.wikipedia.org\/wiki\/%D0%91%D1%83%D1%80%D0%B4%D1%8C%D1%91,_%D0%9F%D1%8C%D0%B5%D1%80\">\u0411\u0443\u0440\u0434\u044c\u0451<\/a>, \u043d\u043e \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043b\u0438\u0448\u044c \u0432 \u0432\u0438\u0434\u0435 \u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0430. Foursquare \u0432\u043e\u043e\u0431\u0449\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043e\u0435\u0439 \u0431\u0435\u0437\u043e\u0442\u0432\u0435\u0442\u043d\u043e\u0439 \u043b\u044e\u0431\u043e\u0432\u044c\u044e. \u041d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043a\u0430\u043a-\u043d\u0438\u0431\u0443\u0434\u044c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437, \u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e Twitter.<br \/>  \u041d\u0435\u0437\u0430\u0434\u043e\u043b\u0433\u043e \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e, 2012-\u0433\u043e, \u0433\u043e\u0434\u0430 \u043c\u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u00ab\u0432\u043e\u043b\u043d\u0430\u00bb \u043d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0438\u0445 \u0442\u0432\u0438\u0442\u043e\u0432-\u043f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u043e\u043d\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0447\u0430\u0441\u043e\u0432\u044b\u0435 \u043f\u043e\u044f\u0441\u0430. \u0421\u043a\u0430\u0437\u0430\u043d\u043e \u2014 \u0441\u0434\u0435\u043b\u0430\u043d\u043e. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b: R, Python \u0438 ffmpeg.<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/393\/064\/256\/3930642567a8dd18168b595fe2ebf457.png\"\/>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-165305","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/165305","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=165305"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/165305\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=165305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=165305"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=165305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}