Точечный график записи 10 тыс. Из базы данных - PullRequest
3 голосов
/ 04 января 2012

Я пытаюсь создать точечный график на Python.Я предположил, что это будет довольно просто, но застрял с пониманием в диаграмме рассеяния (значения x и y) при построении.

== Моя миссия ==

  • У меня есть база данных и более 10 тыс. Записей (все с плавающей запятой) до сих пор, и она будет увеличиваться ежедневно.
  • Диапазон записей составляет от 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()

Понимание Scatterplot ( ссылка )

enter image description here

ОК!этот график не имеет никакого смысла.

== Вопрос ==

  • Как составить точечный график, чтобы увидеть наиболее населенный регион?
  • Как я могу назначить переменную y для создания равного измерения с переменной x (общее количество выбранных записей)?

Новичок в построении графиков и статистике, поэтому, пожалуйста, помогите мне

Ответы [ 2 ]

3 голосов
/ 04 января 2012

Возможно, вы ищете гистограмму 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()

enter image description here


Вы также можете сделать гистограмму / точечный график с помощьюиспользование 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()

enter image description here


Относительно использования pylab: строка документации для pyplot говорит

matplotlib.pylab объединяет pyplot с numpy в одном пространстве имен.Это удобно для интерактивной работы, но для программирования рекомендуется хранить отдельные пространства имен.

2 голосов
/ 04 января 2012

Для точечной диаграммы вам нужно одинаковое количество значений x и y. Обычно в точечной диаграмме одна из переменных является функцией другой или, по крайней мере, обе имеют числовые значения. Например, вы можете иметь значения x [1, 2, 3] и значения y [4, 5, 6], поэтому на двумерном графике значения (x, y) (1, 4), (2 , 5) и (3, 6) будут построены.

В вашем случае, мне кажется, нет значений y, а есть только значения x, и вы сохраняете значение y фиксированным. Из того, что мне кажется, мы не можем сгенерировать точечный график, подобный этому. Нам нужно одно значение у, соответствующее каждому значению х. Вы можете попробовать серийные номера как y, но это не имеет большого смысла в сюжете.

...