如果散点图具有相同的(x,y)值但具有不同的Z值,我试图使散点图具有相同的颜色。
到目前为止,我设法使用一个变量x或y,但我不能以某种方式将它们“压缩”在一起。
df["X"]=pd.Categorical(df["X"])
df["Y"]=pd.Categorical(df["Y"])
df["X"].cat.codes
df["Y"].cat.codes
bx.scatter(xs,ys,zs, zdir=zs, c=df["X"].cat.codes,cmap="Set1", alpha=1)
我试图单独拉链,我尝试用它们制作一个阵列...如果我尝试
df["cat"]=pd.Categorical(zip(df["X"],df["Y"]))
df["cat"].cat.codes
我得到的只是一个类别代码,所以一切都是一样的。
图片澄清
起初我认为日期应该是类别,但这没有意义,因为每天(因为Zaxes采用日期时间格式)会有不同的颜色。 Insstead,每个可能的(x,y)对,即。 (1,-1),(2,1)等应该是一个类别(它是正确使用的词?),因此每一对都应该有自己的颜色,例如(1,-1)是黑色的,( 2,1)是Z坐标的红色 独立 。
答案 0 :(得分:0)
原始DF有X,Y,日期列。
xs=df.X
ys=df.Y
zs=np.array(df_dates2num)
N=len(df)
val_x=df["X"].tolist()
val_y=df["Y"].tolist()
df["pairs"]=pd.Series(list(zip(val_x,val_y)), index=df.index) #make(x,y) pairs
df["pairs"]=df["pairs"].astype("category")
df["pairs"]=df.pairs.cat.codes
bx.scatter(xs,ys,zs, zdir=zs, c=df["pairs"], alpha=1, s=50) #scatter dots
它确实有效,唯一缺少的是使用更加离散的调色板。