Python 散点图-时间序列中dx(dt)的移位点
我有一个代码,为数据列表的每个元素分配一个图例(17种不同的颜色),包括相同颜色的错误条 在这个过程中,我找到了非常有用的答案,可以为循环中的图着色(如帖子:),我得到了如下图像: 问题是:当时间序列作为x轴时,如何为每个iSub的dx偏移每个序列,以便每个iSub的散点图不重叠?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
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
参数之间缺少逗号。