Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 散点图-时间序列中dx(dt)的移位点_Python_Numpy_Matplotlib_Scatter Plot - Fatal编程技术网

Python 散点图-时间序列中dx(dt)的移位点

Python 散点图-时间序列中dx(dt)的移位点,python,numpy,matplotlib,scatter-plot,Python,Numpy,Matplotlib,Scatter Plot,我有一个代码,为数据列表的每个元素分配一个图例(17种不同的颜色),包括相同颜色的错误条 在这个过程中,我找到了非常有用的答案,可以为循环中的图着色(如帖子:),我得到了如下图像: 问题是:当时间序列作为x轴时,如何为每个iSub的dx偏移每个序列,以便每个iSub的散点图不重叠? from datetime import datetime, timedelta import matplotlib.cm as cm import matplotlib.dates as mdates impor

我有一个代码,为数据列表的每个元素分配一个图例(17种不同的颜色),包括相同颜色的错误条

在这个过程中,我找到了非常有用的答案,可以为循环中的图着色(如帖子:),我得到了如下图像:

问题是:当时间序列作为x轴时,如何为每个iSub的dx偏移每个序列,以便每个iSub的散点图不重叠?

from datetime import datetime, timedelta
import matplotlib.cm as cm
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import numpy as np


def datetime_range(start, end, delta):
    current = start
    while current < end:
        yield current
        current += delta


nSub = 17
nTimes = 34

datalist = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q']


DATA = np.random.uniform(low=0.5, high=50.0, size=(nSub,nTimes))

DZ = np.random.rand(nSub,nTimes)

timelist = [dt.strftime('%Y-%m-%d') for dt in 
   datetime_range(datetime(2012, 1, 1), datetime(2014, 8, 1), 
   timedelta(weeks=4))]
datelist = [datetime.strptime(timelist[i], '%Y-%m-%d') for i in range(len(timelist))]

fig, ax = plt.subplots (nrows=1, ncols=1)

colors = cm.rainbow(np.linspace(0, 1, len(datalist)))

for isub in range(len(datalist)):

    ax.scatter(datelist, DATA[isub], label=datalist[isub], color = colors[isub]) 
    ax.errorbar(datelist, DATA[isub], yerr = DZ[isub], color = colors[isub], fmt='o', markersize=8, capsize=20)

    ax.set_xlim([datetime(2011,12,1).toordinal(), datetime(2015,1,1).toordinal()] )

    ax.xaxis.set_tick_params(labelsize=20)
    ax.yaxis.set_tick_params(labelsize=20)

    ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

fig.set_size_inches(40,20)
从datetime导入datetime,timedelta
将matplotlib.cm导入为cm
将matplotlib.dates导入为mdates
将matplotlib.pyplot作为plt导入
将numpy作为np导入
def datetime_范围(开始、结束、增量):
电流=启动
当前<结束时:
屈服电流
电流+=增量
nSub=17
次=34
数据列表=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q']
数据=np.随机.均匀(低=0.5,高=50.0,大小=(nSub,nTimes))
DZ=np.random.rand(nSub,nTimes)
timelist=[dt.strftime(“%Y-%m-%d”)表示中的dt
datetime_范围(datetime(2012,1,1),datetime(2014,8,1),
时间增量(周=4))]
datelist=[datetime.strTime(时间列表[i],“%Y-%m-%d”)表示范围内的i(len(时间列表))]
图,ax=plt子批次(nrows=1,ncols=1)
颜色=厘米彩虹(np.linspace(0,1,len(数据列表)))
对于范围内的isub(len(数据列表)):
散乱(日期列表,数据[isub],标签=数据列表[isub],颜色=颜色[isub])
ax.errorbar(日期列表,数据[isub],yerr=DZ[isub],color=colors[isub],fmt='o',markersize=8,翻船=20)
ax.set_xlim([datetime(2011,12,1).toordinal(),datetime(2015,1,1).toordinal()]))
ax.xaxis.set_tick_参数(labelsize=20)
ax.yaxis.set_tick_参数(labelsize=20)
ax.图例(loc='中间偏左',bbox_至_锚=(1,0.5))
图设置尺寸英寸(40,20)

您可以在
ax.errorbar()方法中使用关键字
ecolor
指定错误条的颜色。请看这里:是的,我看到了,但如何指定它,使其与散点图的颜色匹配?
ecolor
应该设置为什么?根据文档,默认行为是错误条颜色将匹配相关的散布数据颜色。但是,事实证明,它不适用于更复杂的数据集。请参阅上面代码中的更改。在
color=colors[isub]fmt='o'
中的
color
fmt
参数之间缺少逗号。