3

我正在尝试在 Python 中制作散点图。我认为它会相当简单,但在绘图时陷入了对散点图(x 和 y 值)的理解。

==我的使命==

  • 到目前为止,我有数据库和超过 10k 条记录(全部浮动),并且每天都会增加。
  • 记录范围为 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()

散点图理解链接

在此处输入图像描述

行!这个情节没有任何意义。

==问题==

  • 如何制作散点图以查看人口最多的区域?
  • 如何分配 y 变量以使维度与 x 变量(获取的记录总数)相等?

新的绘图和统计,所以请帮帮我

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 的文档字符串说

matplotlib.pylab将 pyplot 和 numpy 组合到一个命名空间中。这对于交互工作很方便,但对于编程,建议将命名空间分开。

于 2012-01-04T18:41:11.670 回答
2

对于散点图,您需要相同数量的 x 和 y 值。通常在散点图中,一个变量是另一个变量的函数,或者至少两者都有数值。例如,您可以有 x 值 [1, 2, 3] 和 y 值 [4, 5, 6],那么在二维图上,(1, 4), (2 , 5) 和 (3, 6) 将被绘制。

在您的情况下,在我看来,没有 y 值,而只有 x 值,并且您保持 y 固定。在我看来,我们无法生成这样的散点图。我们需要一个对应于每个 x 值的 y 值。您可以尝试将序列号设为 y,但这在情节中可能没有多大意义。

于 2012-01-04T18:43:12.617 回答