KevinIvan 2022-01-01 15:28 采纳率: 50%
浏览 542
已结题

请问如何在tsne可视化制作散点图的时候添加图例

数据是一组5维数据,利用tsne降到两维,想看一下数据的可视化分布,但是代码运行时加注图例的时候,matplotlib为我每个点都加注了图例,想请教一下怎么让相同颜色点仅标注一次图例
这个是问题相关代码 ,一开始想着只是把训练测试分别做一个循环把每个点都画出来
traindata = getdata(data_path)
evaldata = getdata(eval_path)
plt.figure(figsize=(16, 16))
def tsnetrainfig(traindatashape):
    for i in range(traindatashape.shape[0]):
        plt.scatter(traindatashape[i, 0], traindatashape[i, 1],c='#F08080',label='traindata',alpha=0.6,s=80)

def tsneevalfig(evaldatashape):
    for i in range(evaldatashape.shape[0]):
        plt.scatter(evaldatashape[i, 0],evaldatashape[i, 1],c='#8B0000',label='evaldata',alpha=0.6,s=80)

tsnetrainfig(traindata)
tsneevalfig(evaldata)

plt.title('TSNE可视化')
plt.legend()
plt.show()

运行结果是这样

img

我想过在plt.lengend()直接添加对应标签,但是总共1000条数据,也不现实,想问一下该怎么解决这种读取本地csv制作tsne散点图加注图例的问题
我想要达到的结果就说让这两种颜色的点仅各标注一次,该怎么解决这个问题.
  • 写回答

1条回答 默认 最新

  • CSDN专家-HGJ 2022-01-01 16:36
    关注

    尝试不要在循环中添加label,在lengend()中设置。示例:

    import pandas as pd
    traindata = pd.read_excel(r'F:\2021\qa\ot3\weight_hight\weights_heights.xlsx')[1:100]
    evaldata = pd.read_excel(r'F:\2021\qa\ot3\weight_hight\weights_heights.xlsx')[100:121]
    plt.figure(figsize=(16, 16))
    def tsnetrainfig(traindatashape):
        for i in range(len(traindatashape)):
            p1=plt.scatter(traindatashape.iloc[i, 0], traindatashape.iloc[i, 1],c='#F08080',alpha=0.6,s=80)
        return p1
    def tsneevalfig(evaldatashape):
        for i in range(len(evaldatashape)):
            p2=plt.scatter(evaldatashape.iloc[i, 0],evaldatashape.iloc[i, 1],c='#8B0000',alpha=0.6,s=80)
        return p2
    a=tsnetrainfig(traindata)
    b=tsneevalfig(evaldata)
    plt.title('TSNE可视化')
    plt.legend([a,b],['traindata','evaldata'])
    plt.show()
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月10日
  • 已采纳回答 1月2日
  • 创建了问题 1月1日

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable