3

ここにトリッキーな問題があります (少なくとも私はそう思います)。ヒストグラムを作成する必要がありますが、データとその頻度を取得する代わりに、繰り返しデータ (つまり、ビニングされていない) と各データの重みがあります。

一例:

Angle  | Weight    
90   ....  3/10     
93   ....  2/10   
180  ....  2/10    
180  ....  1/10    
95   ....  2/10    

ビン サイズ 10 のヒストグラムを作成したいと考えています。y 値は、範囲内の角度の加重度数の合計である必要があります。どうすればいいですか?できれば Mathematica または疑似コード...

4

3 に答える 3

1

期待される結果が得られないため、Verbeia の解釈を採用します。次のようなものを使用できます。

dat = {{90, 3/10}, {93, 1/5}, {180, 1/5}, {180, 1/10}, {95, 1/5}};

bars =
 Reap[
   Sow[#2, Floor[#, 10]] & @@@ dat,
   _,
   {#, Tr@#2} &
 ][[2]]

Graphics[
  Rectangle[{#, 0}, {# + 10, #2}] & @@@ bars,
  AspectRatio -> 1/GoldenRatio,
  Axes -> True,
  AxesOrigin -> {Min@bars[[All, 1]], 0}
]

Mathematica グラフィックス

于 2012-01-12T08:46:37.217 に答える
0

最近、別の種類の質問に対して同様のことを行いました(貸借対照表のサイズによる重み付け)。

データが N * 2 行列リストにあると仮定すると、次のようになります。

{numbers,weights} = {data[[All,1]], data[[All,2]]*10};

weightednumbers =       Flatten@ MapThread[
    Table[#1, {#2}] &, {numbers, Ceiling[weights]}];

次にHistogram、この変換されたデータにヒストグラムを描画するために使用します。

他の方法があるかもしれませんが、これは機能します。

重要な点は、重みが整数であることを確認することです。したがって、Table正しい反復子として。weights これには、として定義する必要がある場合がありますdata[[All,2]]*Min[data[[All,2]]

于 2012-01-12T05:57:47.810 に答える