3

Pythonで散布図を作成しようとしています。かなり単純だと思いましたが、プロット中に散布図(xとyの値)を理解するのに行き詰まりました。

==私の使命==

  • 私はデータベースと 10,000 を超えるレコード (すべてフロート) を今まで持っており、毎日増加します。
  • レコード範囲は 200 から 2000 (浮動小数) です。
  • そのため、データセットで最も人口の多い地域を確認したいと考えています。

==私は何をしましたか?==

import numpy as np
import pylab as pl
import MySQLdb
import sys
import math

conn = MySQLdb.connect(
    host="localhost",
    user="root",
    passwd="root",
    db="myproject")

with conn:
    cur = conn.cursor()

    #will fetch all recoreds called monoiso field
    cur.execute("SELECT monoiso FROM pmass_selectedion")
    rows = cur.fetchall()

    for row in rows:

        #xvalue for monoiso variable and yvalue for range 
        xvalue = row
        yvalue = [600]

        # tried this way too but got x and y dimension error
        #yvalue = [400,800,1200,1600]

        pl.plot(xvalue,yvalue,'ro')
pl.show()

散布図の理解(リンク)

ここに画像の説明を入力

Ok!このプロットは意味がありません。

==質問==

  • 最も人口の多い地域を見るために散布図を作成する方法は?
  • x変数(フェッチされたレコードの総数)と同じ次元にするためにy変数を割り当てるにはどうすればよいですか?

プロットと統計が初めてなので、助けてください

4

2 に答える 2

3

おそらくあなたはmatplotlibのヒストグラムを探しています:

import numpy as np
import MySQLdb
import matplotlib.pyplot as plt # This is meant for scripts
# import pylab as pl # This is meant for interactive sessions; 
import operator

conn = MySQLdb.connect(
    host="localhost",
    user="root",
    passwd="root",
    db="myproject")

with conn:
    cur = conn.cursor()

    #will fetch all recoreds called monoiso field
    cur.execute("SELECT monoiso FROM pmass_selectedion")
    rows = cur.fetchall()

monoisos = [row[0] for row in rows]

# Make a histogram of `monoisos` with 50 bins.
n, bins, histpatches = plt.hist(monoisos, 50, facecolor = 'green')
plt.show()

ここに画像の説明を入力


numpy.histogramを使用して、ヒストグラム/ドット プロットを作成することもできます。

momoisos = [row[0] for row in rows]
hist, bin_edges = np.histogram(monoisos, bins = 50)
mid = (bin_edges[1:] + bin_edges[:-1])/2
plt.plot(mid, hist, 'o')
plt.show()

ここに画像の説明を入力


pylab の使用について: pyplot の docstring は言う

matplotlib.pylabpyplot と numpy を単一の名前空間に結合します。これはインタラクティブな作業には便利ですが、プログラミングでは名前空間を分けておくことをお勧めします。

于 2012-01-04T18:41:11.670 に答える
2

散布図の場合、同じ数の x 値と y 値が必要です。通常、散布図では、変数の 1 つが他の変数の関数であるか、少なくとも両方が数値を持っています。たとえば、x の値が [1, 2, 3] で y の値が [4, 5, 6] の場合、2 次元プロットでは (x, y) の値 (1, 4), (2 , 5) と (3, 6) がプロットされます。

あなたの場合、y値はなく、x値のみがあり、yを固定しているように思えます。私が思うに、このような散布図を生成することはできません。各 x 値に対応する 1 つの y 値が必要です。シリアル番号を y として試すこともできますが、プロットではあまり意味がない場合があります。

于 2012-01-04T18:43:12.617 に答える