ユーザー:Ixfd64/リビジョンサイズ

これは、Wikipedia ページのバイト サイズを経時的に視覚化するためのRスクリプトです。もともとこれはStat 133クラスの課題用に書きましたが、一般に公開することにしました。他のウィキペディアンは、必要に応じてそれを改善することを歓迎します。

ソースコード

# 現在のバージョン: 1.2.0 
# 最終更新日: 2009 年 11 月 19 日

# Tcl/Tk ライブラリをロードする

必要( tcltk )

# メインGUIを作成

Base  =  tktoplevel () 
tkwm タイトル(ベース「Wikipedia リビジョン サイズ」)

# メインフレームを作成する

nfrm  =  tkframe (ベース)

# Tcl変数を作成する

改訂tcl  =  tclVar ( '' )
ページtcl  =  tclVar ( '' )

# 「ページ」テキストフィールドを作成

f1  =  tkframe ( nfrm ) 
tkpack ( tklabel ( f1 ,  text  =  'Page' )、 side  =  'left' ) 
tkpack ( tkentry ( f1  width  =  25  textvariable  =  page . tcl )、 side  =  'left' )

# 「リビジョン」テキストフィールドを作成

f2  =  tkframe ( nfrm ) 
tkpack ( tklabel ( f2 ,  text  =  'Revisions' ),  side  =  'left' ) 
tkpack ( tkentry ( f2 ,  width  =  8 ,  textvariable  =  revions . tcl ),  side  =  'left' )

# GUI 要素をパックする

tkpack ( f1  side = 'top' ) 
tkpack ( f2  side = 'top' ) 
tkpack ( nfrm )

# 言語コード
# 完全なリストは http://meta.wikimedia.org/wiki/List_of_Wikipedias で入手できます

lang  =  'en'

# ページのリビジョンサイズを取得する

getpage  =  function ( ... )  {
  リビジョン =  as . numeric ( tclvalue ( reviations . tcl )) 
  page  =  as .文字( tclvalue ( page . tcl ))
  ページ. loc  =  gsub ( ' ' ,  '_' ,  page )  # スペース解析を修正
  ge  =  function ( s ,  g )  substring ( s ,  g ,  g  +  attr ( g ,  'match.length' )  -  1 ) 
  byte pat  =  '<span class="history-size">(\\([0-9bytesmtp ,]+\\))</span>' 
  Historylink  =  Past ( 'http://' ,  lang ,  '.wikipedia. org / w/index.php?title='  page . loc  '&limit='  as .character ( revions )、'&action=history' sep = '' ) History = readLines ( Historylink ) if ( any ( grep ( '改訂履歴なし' , history ))) { tkmessageBox ( title = 'Error' , message = 'このページは存在しません!' , type = 'ok' ) } else { reviationdata = gsub ( byte . pat , '\ \1' mapply ( ge 履歴[ grep ( byte . pat , History )]、gregexpr ( byte . pat 履歴[ grep ( byte . pat ,履歴)]、無視します  
    
     
            
  
            case  =  TRUE ))、 無視しますcase  =  TRUE )
  リビジョンデータ =  as 文字(リビジョンデータ)
  リビジョンデータ =  gsub ( '[\\(\\), ]' ,  '' , リビジョンデータ) 
  for  ( a  in  1 :長さ(リビジョンデータ))  { 
    if  (リビジョンデータ[ a ]  ==  '空' )  {リビジョンデータ[ a ]  =  '0' } 
  }
  リビジョンデータ =  gsub ( '[バイト]' ,  '' , リビジョンデータ)
  リビジョンデータ =  as numeric ( reviationdata ,  ignore.na = TRUE  ) revisiondata = rev (  reviationdata ) plot ( revisiondata , xlab = 'リビジョンインデックス' , ylab = paste ( ' \ "'のリビジョンサイズ, page , '\"(バイト)' , sep = '' )、タイプ= 'l' ) } }
    
                
  


# プログラムを終了する

destroy  = 関数( ... )  tkdestroy (ベース)

# ボタンを作成する

bfrm  =  tkframe ( base ) 
tkpack ( tkbutton ( bfrm ,  text  =  'Run' ,  command  =  getpage ),  side  =  'left' ) 
tkpack ( tkbutton ( bfrm ,  text  =  'Quit' ,  command  =  destroy ),  side  =  'right ' )

# ボトムフレームをパックする

tkpack ( bfrm  side  =  'bottom' )

使用法

Milky Wayの過去 500 回の改訂

このスクリプトには R がインストールされている必要があります。このスクリプトを使用する最良の方法は、R ワークスペースのディレクトリにあるテキスト ファイルにスクリプトを配置することです。たとえば、ファイルにwpgraph.txtという名前を付けた場合、 R コンソールに「 source('wpgraph.txt')」と入力してスクリプトを実行できます。

制限事項

  • 特定の文字が正しく処理されません。たとえば、「1+1 」は1%2B1と入力する必要があります
「https://en.wikipedia.org/w/index.php?title=User:Ixfd64/revision_sizes&oldid=1086824036」から取得