CDF,matplotlib-绘图、python的颜色不够
这里需要在一个图中绘制8个不同函数的CDF。问题是它只提供7种不同的颜色,而8种颜色只提供第一种蓝色。如何制作8种不同的颜色 以下是脚本:CDF,matplotlib-绘图、python的颜色不够,python,matplotlib,plot,cdf,Python,Matplotlib,Plot,Cdf,这里需要在一个图中绘制8个不同函数的CDF。问题是它只提供7种不同的颜色,而8种颜色只提供第一种蓝色。如何制作8种不同的颜色 以下是脚本: locerror_2d=[Scan_Around[1],Triangle_Around[1],M_shape_Around[1],Hilbert_Around[1],Scan_SbS[1],Triangle_SbS[1],M_shape_SbS[1],Hilbert_SbS[1]] # N = len(locerror_2d[0]) #same for
locerror_2d=[Scan_Around[1],Triangle_Around[1],M_shape_Around[1],Hilbert_Around[1],Scan_SbS[1],Triangle_SbS[1],M_shape_SbS[1],Hilbert_SbS[1]]
# N = len(locerror_2d[0]) #same for all ( here, I hope so... )
# N1=len(locerror_2d[2])
H_cent,h_cent1 = np.histogram( locerror_2d[0], bins = 10, normed = True ) # Random Walk Centroid
hy_cent = np.cumsum(H_cent)*(h_cent1[1] - h_cent1[0])
H_1st,h_1st = np.histogram( locerror_2d[1], bins = 10, normed = True ) # Random Walk Weighterd
hy_1st = np.cumsum(H_1st)*(h_1st[1] - h_1st[0])
H_2nd,h_2nd = np.histogram( locerror_2d[2], bins = 10, normed = True ) # Circle Walk Centroid
hy_2nd = np.cumsum(H_2nd)*(h_2nd[1] - h_2nd[0])
H_3rd,h_3rd = np.histogram( locerror_2d[3], bins = 10, normed = True ) # Circle Walk Weighterd
hy_3rd = np.cumsum(H_3rd)*(h_3rd[1] - h_3rd[0])
H_mm,h_mm = np.histogram( locerror_2d[4], bins = 10, normed = True ) # G Walk Centroid
hy_mm = np.cumsum(H_mm)*(h_mm[1] - h_mm[0])
H_shr,h_shr = np.histogram( locerror_2d[5], bins = 10, normed = True ) # G Walk Weighterd
hy_shr = np.cumsum(H_shr)*(h_shr[1] - h_shr[0])
H_s,h_s = np.histogram( locerror_2d[6], bins = 10, normed = True ) # G Walk Weighterd
hy_s = np.cumsum(H_s)*(h_s[1] - h_s[0])
H_sh,h_sh = np.histogram( locerror_2d[7], bins = 10, normed = True ) # G Walk Weighterd
hy_sh = np.cumsum(H_sh)*(h_sh[1] - h_sh[0])
plt.hold(True)
ddd_hist_cent, = plt.plot(h_cent1[1:], hy_cent,label="Scan_Around") # centroid
ddd_hist_1st, = plt.plot(h_1st[1:], hy_1st,label='Triangle_Around') #Gradient
ddd_circ_cent, = plt.plot(h_2nd[1:], hy_cent,label="M_shape_around") # centroid
ddd_circ_wei, = plt.plot(h_3rd[1:], hy_1st,label='Hilbert_Around') #Gradient
ddd_g_cent, = plt.plot(h_mm[1:], hy_cent,label="Scan_SbS") # centroid
ddd_g_wei, = plt.plot(h_shr[1:], hy_1st,label='Triangle_SbS') #Gradient
ddd_g_w, = plt.plot(h_s[1:], hy_cent,label='M_shape_SbS')
ddd_g_we, = plt.plot(h_sh[1:], hy_1st,label='Hilbert_SbS')
plt.hold(False)
plt.rc('legend',**{'fontsize':10})
plt.legend(handles=[ddd_hist_cent, ddd_hist_1st, ddd_circ_cent, ddd_circ_wei, ddd_g_cent,ddd_g_wei, ddd_g_w],loc='center left', bbox_to_anchor=(0.75, 0.18)) #no trilateration here
plt.ylabel('Probability')
plt.xlabel('Localization Error, m')
plt.ylim(ymax = 1.1, ymin = 0)
plt.title('Path Planning Algorithms')
plt.grid()
plt.show()
谢谢你我喜欢用这个代码直接从彩色地图上读取我的颜色
def getColor(c, N, idx):
import matplotlib as mpl
cmap = mpl.cm.get_cmap(c)
norm = mpl.colors.Normalize(vmin=0.0, vmax=N - 1)
return cmap(norm(idx))
在这里,c是colormap的名称,请参见列表,N是您想要的颜色总数,idx只是生成特定颜色的索引
然后在调用plot函数时,只需添加color=getColorc,N,idx选项。我喜欢用这段代码直接从颜色映射中读取我的颜色
def getColor(c, N, idx):
import matplotlib as mpl
cmap = mpl.cm.get_cmap(c)
norm = mpl.colors.Normalize(vmin=0.0, vmax=N - 1)
return cmap(norm(idx))
在这里,c是colormap的名称,请参见列表,N是您想要的颜色总数,idx只是生成特定颜色的索引
然后在调用plot函数时,只需添加color=getColorc,N,idx选项。确定。我得到了它。在绘图的最后,我只需要显示颜色
ddd_hist_cent, = plt.plot(h_cent1[1:], hy_cent,label="Scan_Around", c='yellow')
嗯。我得到了它。在绘图的最后,我只需要显示颜色
ddd_hist_cent, = plt.plot(h_cent1[1:], hy_cent,label="Scan_Around", c='yellow')
最简单的解决方案:为最后一条曲线指定不同的颜色:
plt.plot(h_sh[1:], hy_1st,label='Hilbert_SbS', color="orange")
Matplotlib版本1.5或更低版本在其颜色循环中有7种不同的颜色,而Matplotlib 2.0有10种不同的颜色。因此,更新matplotlib是另一种选择
一般来说,您当然可以定义自己的颜色循环,该循环具有您想要的任意多个颜色
从颜色贴图构建循环器,如中所示:
从颜色列表生成循环器:
import matplotlib.pyplot as plt
from cycler import cycler
colors=["aquamarine","crimson","gold","indigo",
"lime","orange","orchid","sienna"]
plt.rcParams["axes.prop_cycle"] = cycler('color',colors)
最简单的解决方案:为最后一条曲线指定不同的颜色:
plt.plot(h_sh[1:], hy_1st,label='Hilbert_SbS', color="orange")
Matplotlib版本1.5或更低版本在其颜色循环中有7种不同的颜色,而Matplotlib 2.0有10种不同的颜色。因此,更新matplotlib是另一种选择
一般来说,您当然可以定义自己的颜色循环,该循环具有您想要的任意多个颜色
从颜色贴图构建循环器,如中所示:
从颜色列表生成循环器:
import matplotlib.pyplot as plt
from cycler import cycler
colors=["aquamarine","crimson","gold","indigo",
"lime","orange","orchid","sienna"]
plt.rcParams["axes.prop_cycle"] = cycler('color',colors)