相关疑难解决方法(0)

在matplotlib vlines图中未应用y轴的最小值

我在matplotlib中做了一个vlines图,我在数据集中得到了所有的y值>=0.我希望我的y轴最下方可以读取0,但相反,我得到-500.

这是代码:

#!/usr/bin/env python

import numpy as np
from matplotlib import pyplot as plt, dates as mdates
import datetime as dt, time

# Read the data and turn it into a numpy array
#store = map(lambda line: map(int, line.strip().split()), open(name + '.txt').readlines())
store = [
    [1293606162197, 0, 0],
    [1293605477994, 63, 0],
    [1293605478057, 0, 0],
    [1293605478072, 2735, 1249],
    [1293606162213, 0, 0],
    [1293606162229, 0, 0],
]

nstore = np.array(store)

# Get arrays of each columns in the store …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

12
推荐指数
1
解决办法
2万
查看次数

如何在python中使用matplolib更改日期格式

可能重复:
使用matplotlib在轴标签中创建包含日期和时间的图形

当我的数据在我的字典中有完整的日期时,我不知道如何在使用matplotilib绘图时更改日期格式,我只绘制小时,分钟,秒

from datetime import datetime
import matplotlib.pyplot as plt


dico =  {'A01': [(u'11/10/12-08:00:01', 2.0), (u'11/10/12-08:10:00', 10.0), \
                 (u'11/10/12-08:20:01', 5.0), (u'11/10/12-08:30:01', 15.0), \
                 (u'11/10/12-08:40:00', 7.0), (u'11/10/12-08:50:01', 45.0)],
         'A02': [(u'11/10/12-08:00:01', 10.0), (u'11/10/12-08:10:00', 12.0), \
                 (u'11/10/12-08:20:01', 15.0), (u'11/10/12-08:30:01', 10.0), \
                 (u'11/10/12-08:40:00', 17.0), (u'11/10/12-08:50:01', 14.0)]}

x = []
y = []
for key in sorted(dico.iterkeys()):
#in Python3
#for key in sorted(dico.keys()):
   points = [(datetime.strptime(i[0], "%d/%m/%y-%H:%M:%S"), \
               i[1]) for i in dico[key]]
   points.sort()
x, y = zip(*points)
plt.plot(x, y, label=key)  
# plotting
plt.gcf().autofmt_xdate() …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

6
推荐指数
1
解决办法
8902
查看次数

当我使用matplotlib的DateFormatter格式化x轴上的日期时,为什么我的"python int太大而无法转换为C long"错误?

这个答案使用DateFormatter后,我尝试使用pandas 0.15.0和matplotlib 1.4.2绘制时间序列并用x年标记其x轴:

import datetime as dt
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas.io.data as pdio
import scipy as sp

t1 = dt.datetime(1960, 1, 1)
t2 = dt.datetime(2014, 6, 1)
data = pdio.DataReader("GS10", "fred", t1, t2).resample("Q", how=sp.mean)

fig, ax1 = plt.subplots()
ax1.plot(data.index, data.GS10)
ax1.set_xlabel("Year")
ax1.set_ylabel("Rate (%)")
ax1.xaxis.set_major_formatter(mpl.dates.DateFormatter("%Y"))
fig.suptitle("10-yr Treasury Rate", fontsize=14)

fig.savefig('test.eps')
Run Code Online (Sandbox Code Playgroud)

最后一行引发错误:OverflowError: Python int too large to convert to C long 使用此回溯:

C:\ Anaconda3\lib\site-packages\IPython\core\formatters.py:239:FormatterWarning:image/png格式化程序中的异常:Python int太大而无法转换为C long FormatterWarning,Traceback(最近一次调用最后一次):

文件"",第1行,在runfile中('D:/username/latex_template/new_pandas_example.py',wdir ='D:/ username/latex_template')

文件"C:\ Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py",第580行,在runfile execfile(filename,namespace)中 …

python matplotlib python-3.x pandas

6
推荐指数
1
解决办法
7038
查看次数

读取和绘制从大文件中读取的数据

我们有相当大的文件,1-1.5 GB的原始数据的顺序组合(主要是日志文件),很容易解析的为csv,随后应该被绘制来产生一组图形图像.

目前,我们正在使用bash脚本将原始数据转换为csv文件,只需要绘制数字,然后将其输入到gnuplot脚本中.但这个过程非常缓慢.我试图通过用一个命令替换一些管道cuts,trs等来加速bash脚本awk,虽然这提高了速度,整个事情仍然很慢.

所以,我开始相信这个过程有更好的工具.我目前正在寻找在python + numpy或R中重写这个过程.我的一个朋友建议使用JVM,如果我这样做,我将使用clojure,但我不确定JVM将如何执行.

我在处理这类问题方面没有多少经验,所以关于如何进行的任何建议都会很棒.谢谢.

编辑:另外,我想要存储(到磁盘)生成的中间数据,即csv,所以我不必重新生成它,如果我选择我想要一个不同的图形.

编辑2:原始数据文件每行有一条记录,其字段由分隔符(|)分隔.并非所有字段都是数字.输出csv中我需要的每个字段是通过在输入记录上应用某个公式获得的,输入记录可以使用输入数据中的多个字段.输出csv每行将有3-4个字段,我需要在(可能是)条形图中绘制1-2,1-3,1-4字段的图表.我希望能给出更好的画面.

编辑3:我稍微修改了@ adirau的脚本,似乎工作得很好.我已经足够了,我正在读取数据,发送到处理器线程池(伪处理,将线程名称附加到数据),并通过另一个收集器线程将其聚合到输出文件中.

PS:我不确定这个问题的标记,随时纠正它.

python graphing numpy r large-files

5
推荐指数
0
解决办法
2556
查看次数

x轴matplotlib上的良好日期格式

我有以下数据帧:

Time    test
0:05    2
0:06    2
0:07    2
0:08    2
0:09    2
0:10    2
0:11    2
Run Code Online (Sandbox Code Playgroud)

该数据帧从0:00开始,到11:59结束.我创建了以下图表:

x = dftestgraph['Time']
y = dftestgraph['test']
plt.ylabel('Number of tasks')
plt.plot(x, y, color="#00a1e4", label="Number of Tasks")
plt.fill(x, y, '#00a1e4', alpha=0.8)
plt.show()
Run Code Online (Sandbox Code Playgroud)

图形

为什么图表底部有一条线,将我填充的图形分成两半?我想将我的x轴格式化为(0:00,0:30,1:00等)我试过:

plt.xticks(0:00, 11:59, 30:00))
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我的问题是:

  • 为什么我的图表中有一行,我该如何解决?
  • 如何以正确的格式设置x轴?

python matplotlib

3
推荐指数
1
解决办法
2807
查看次数

标签 统计

python ×5

matplotlib ×4

graphing ×1

large-files ×1

numpy ×1

pandas ×1

python-3.x ×1

r ×1