Я хотел бы нарисовать гистограмму, которая объясняет, как распределяются данные. Моя проблема в том, что большинство данных имеют очень маленькие значения. Следовательно, если вы используете 10 бункеров, это будет не так описательно; большая часть данных сжимается в 0.0-0.1 bin. Если вы используете 1000 ящиков, то гистограмма выглядит не очень хорошо из-за xlabels , и некоторые бункеры перекрывают другие, так как у нас слишком много бункеров.Как нарисовать гистограмму, когда некоторые бункеры доминируют над остальными
Я попытался использовать, например, нормированную версию в масштабе журнала, но все же я не смог получить информативную гистограмму. Я уже вычислил (1000) ящики и подсчеты. Ниже приведен код для чтения данных. Вы можете запустить его: ./sub-histogram.py hist-data.txt 2500 0
. 0 означает, что вы используете необработанные счетчики (первая строка). Последняя строка содержит значения bin.
Первой идеей является слияние счетчиков и бункеров с некоторым порогом. Если подсчеты меньше определенного порога, скопируйте этот счетчик и пропустите этот бит. У меня сейчас нет никакой дополнительной идеи, но я уверен, что если вы используете гистограмму, вы столкнулись с этой проблемой. Есть ли решение для таких случаев ? Данные и все это here.
import sys
from itertools import izip
import matplotlib.pyplot as plt
import numpy as np
lines = open(sys.argv[1]).readlines()
threshold = float(sys.argv[2])
count_type = int(sys.argv[3]) # 0 for raw counts, 1 for normalized counts, 2 for log counts
# reading
C = map(float, lines[count_type][1:-2].replace(",", "").split())
B = map(float, lines[3][1:-2].replace(",", '').split())
# merging method.
# accumulate the counts with respect to threshold.
counts = []
bins = []
ct = 0
for c, b in izip(C,B):
ct += c
if ct >= threshold:
counts.append(ct)
bins.append(b)
ct = 0
if ct > 0:
counts.append(ct)
bins.append(b)
ct = 0
print counts
print bins
bar_width= 0.005
plt.xticks(np.linspace(0,2,41))
plt.bar(bins, counts, bar_width)
plt.show()
Я пробовал лог, но наложения перекрывались друг с другом, даже я использовал ширину бара 0,005. План Б использует журнал, но я хотел бы услышать некоторые мысли. – Thorn