python - 使用 matplotlib 将 CSV 转换为 PNG 问题

标签 python csv matplotlib

我正在尝试使用一些 CSV 数据创建 PNG 图像,但收到与日期列相关的错误(同时转换为列表)。错误是:

Traceback (most recent call last):
File "C:/Users/user1/Desktop/Py/AgentsStatus/testGraph.py", line 57, in <module>
    plt.plot(dateCol,okCol,linewidth=5)
File "C:\Python34\lib\site-packages\matplotlib\pyplot.py", line 3154, in plot
    ret = ax.plot(*args, **kwargs)
File "C:\Python34\lib\site-packages\matplotlib\__init__.py", line 1812, in inner
    return func(ax, *args, **kwargs)
File "C:\Python34\lib\site-packages\matplotlib\axes\_axes.py", line 1425, in plot
    self.add_line(line)
File "C:\Python34\lib\site-packages\matplotlib\axes\_base.py", line 1708, in add_line
    self._update_line_limits(line)
File "C:\Python34\lib\site-packages\matplotlib\axes\_base.py", line 1730, in _update_line_limits
    path = line.get_path()
File "C:\Python34\lib\site-packages\matplotlib\lines.py", line 925, in get_path
    self.recache()
File "C:\Python34\lib\site-packages\matplotlib\lines.py", line 612, in recache
    x = np.asarray(xconv, np.float_)
File "C:\Python34\lib\site-packages\numpy\core\numeric.py", line 482, in asarray
    return array(a, dtype, copy=False, order=order)
ValueError: could not convert string to float: '11-04-2016'

CSV 包含:

11-04-2016;37180;6;23852
18-04-2016;37341;9;24105
25-04-2016;37075;18;23788

我的代码是:

import csv
import matplotlib.pyplot as plt
import os

path = 'C:\\Users\\user1\\Desktop\\Py\\AgentsStatus\\data.csv'

with open (path) as csvfile:
    readCSV = csv.reader(csvfile, delimiter=';')

    dateCol = [] # date list

    for row in readCSV:
        if row:
            date0 = row[0]
            dateCol.append(date0)

with open (path) as csvfile:
    readCSV = csv.reader(csvfile, delimiter=';')

    okCol = [] # all agents list

    for row in readCSV:
        if row:
            ok0 = row[1]
            okCol.append(ok0)


with open (path) as csvfile:
    readCSV = csv.reader(csvfile, delimiter=';')

    heaCol = [] # healthy list




from matplotlib import pyplot as plt
from matplotlib import style

style.use('ggplot')


# can plot specifically, after just showing the defaults:
plt.plot(dateCol,okCol,linewidth=5)
plt.plot(dateCol,heaCol,linewidth=5)

plt.title('Epic Info')
plt.ylabel('Y axis')
plt.xlabel('X axis')

plt.show()

我的目标是创建如下所示的内容:

enter image description here

您能给我一些关于我做错了什么的提示吗?我认为我的问题可能是我没有将 List dateCol 设置为图表的索引(不绘制它)。你能帮我一下吗?

非常感谢。

最佳答案

对于像这样的东西,Pandas 是无与伦比的:

import pandas
import matplotlib.pyplot as plt

df = pandas.read_csv('sampledata.csv', delimiter=';', 
                     index_col=0, 
                     parse_dates=[0], dayfirst=True, 
                     names=['date','a','b','c'])
df.plot()

plt.savefig('sampledata.png')

结果

enter image description here

关于python - 使用 matplotlib 将 CSV 转换为 PNG 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38354186/

相关文章:

python - 写入文本文件错误 - 必须是 str,而不是列表

python - 在三重 for 循环中从 plt.imshow 创建 matplotlib 动画

python - 如何使用 hexbin 和 matplotlib 将颜色淡化为透明?

python - 在 python 中创建 venv 并克隆 git repo 的操作

python - 比较行 csv 中的上一个和下一个值

python - 尝试使用 aiohttp-cors 设置 connexion.AioHttpApp() 来实现异步路由失败

C++字符串拆分但转义引号中的所有定界符

python - 使用 Matplotlib 绘制多级标题数据框

python - Scrapy 数据流以及项目和项目加载器

python - 在 python 中使用重复迭代器将项目插入列表