在python直方图中强制使用均匀的bin显示宽度来实现非均匀数据分块

2024-06-16 00:14:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一套与几百本书出版年份相对应的日期。目前绝大多数是1800人。但也有一些(10个)是1800年以前的,但分布广泛。我想让我的垃圾箱变成这样:

[016001700180018101820,…200001202020]

但对于所有显示的箱子都是相同数量的像素宽。在

以下是我目前为止的代码:

import sys
import csv
import numpy as np
import matplotlib.pyplot as plt
import time
import math as m

def importData(fileName):

  dataArray=[]
  file=open(fileName,'rb')
  data = csv.reader(file,delimiter="\t")
  for row in data:
    dataArray.append(row[4])
  file.close()
  dataArray=np.array(dataArray).astype(int)
  return dataArray

dates = importData("tabulatedDates.dat")

binDivs=np.array([1600,1700]+range(1800,2021,10))

plt.hist(dates,bins=(binDivs),label=["Books"])

plt.xticks(binDivs,rotation=75)
plt.xlim([1600,2020])
plt.minorticks_on()
plt.tick_params(axis='x',which='minor',bottom='off')

plt.grid(True,axis='y',which='both')
plt.xlabel("Year")
plt.ylabel("Number of books published during this period")
plt.title("Published year of recommended books")

plt.show()

这是输出,我想让那些恼人的宽箱子和其他箱子一样宽,但仍然代表100年

First example

现在我可以在width变量集中使用这段代码,但是我有一堆难看的空白,这同样有问题。在

^{pr2}$

Second example


Tags: csv代码importdataasnppltfilename