Python 如何使用matplotlib从值列表生成直方图?

Python 如何使用matplotlib从值列表生成直方图?,python,list,matplotlib,plot,Python,List,Matplotlib,Plot,所以我一直在尝试使用python和mathplotlib绘制直方图。 我有两个数据集,基本上是python中男性和女性样本列表的高度,从csv文件导入 我正在使用的代码: import csv import numpy as np from matplotlib import pyplot as plt men=[] women=[] with open('women.csv','r') as f: r1=csv.reader(f, delimiter=',') for row

所以我一直在尝试使用python和mathplotlib绘制直方图。 我有两个数据集,基本上是python中男性和女性样本列表的高度,从csv文件导入

我正在使用的代码:

import csv
import numpy as np
from matplotlib import pyplot as plt
men=[]
women=[]

with open('women.csv','r') as f:
    r1=csv.reader(f, delimiter=',')
    for row in r1:
        women+=[row[0]]

with open('men.csv','r') as f:
    r2=csv.reader(f, delimiter=',')
    for row in r2:
        men+=[row[0]]


fig = plt.figure()
ax = fig.add_subplot(111)

numBins = 20
ax.hist(men,numBins,color='blue',alpha=0.8)
ax.hist(women,numBins,color='red',alpha=0.8)
plt.show()
我得到的错误是:

Traceback (most recent call last):
  File "//MEME/Users/Meme/Miniconda3/Lib/idlelib/test.py", line 22, in <module>
    ax.hist(men,numBins,color='blue',alpha=0.8)
  File "\\MEME\Users\Meme\Miniconda3\lib\site-packages\matplotlib\__init__.py", line 1811, in inner
    return func(ax, *args, **kwargs)
  File "\\MEME\Users\Meme\Miniconda3\lib\site-packages\matplotlib\axes\_axes.py", line 5983, in hist
    raise ValueError("color kwarg must have one color per dataset")
ValueError: color kwarg must have one color per dataset
回溯(最近一次呼叫最后一次):
文件“//MEME/Users/MEME/Miniconda3/Lib/idlelib/test.py”,第22行,在
ax.hist(男性、麻木、蓝色、阿尔法=0.8)
文件“\\MEME\Users\MEME\Miniconda3\lib\site packages\matplotlib\\uuuu init\uuuu.py”,第1811行,在内部
返回函数(ax,*args,**kwargs)
文件“\\MEME\Users\MEME\Miniconda3\lib\site packages\matplotlib\axes\u axes.py”,第5983行,在hist中
raise VALUERROR(“颜色kwarg必须每个数据集有一种颜色”)
ValueError:color kwarg每个数据集必须有一种颜色

注意:假设文件包含多行(逗号分隔),每行的第一个条目是高度

当您将“数据”添加到
女性
男性
列表中时,会出现错误<代码>行[0]实际上是一个字符串。因此matplotlib是混乱的。我建议您在绘图之前运行以下代码(python 2):

将提供一个示例输出

['1','3','3']
['2','3','1']

因此,在循环中,您只需将字符串转换为浮点或整数,例如,
women+=[float(row[0])]
men+=[float(row[0])]

以下是一个教程:我使用该代码会得到相同的错误。我相信这个问题与我如何导入数据集有关?啊,是的,它现在工作得很好!谢谢你的快速帮助!很高兴知道它的帮助!请你在旁边打勾接受我的回答好吗?谢谢你。快乐编码
['1','3','3']
['2','3','1']