文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

matplotlib如何实现一维散点分布图

2023-07-05 10:44

关注

这篇“matplotlib如何实现一维散点分布图”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“matplotlib如何实现一维散点分布图”文章吧。

引言

本次的目标是绘制数据的一维散点分布图,应用场景是数据一维标签的聚类可视化,假定我们拥有原始的带标签数据 ( X , y ) (X,y) (X,y)其中 X X X为样本特征矩阵, y y y为对应样本的标签(连续值),通过聚类算法得到了 X X X的伪分类标签 y ^ , y ^ ∈ ( 1 , 2 , . . . , N ) \hat{y}, \hat{y}\in(1,2,...,N) y^,y^∈(1,2,...,N),想要绘制出相同类别样本在标签值是否同样是集中的。
值得注意的是,由于我们可能获得多类样本,因此仅仅使用一张图来进行绘制可能会使得不同类别样本的marker在图上相互重叠,因此需要为每一类样本单独绘制一维散点分布图,并在同一张画布上显示。

方法

为了显示一维的单张散点分布图,我们需要对matplotlib默认的二维画布进行调整,将其余三条轴线都设置为不可见,只保留底部的轴线,进一步的,要把纵轴label的位置向图左端移动(否则在横轴包括负半轴时,label会出现在图中央),实例代码如下:

axs.spines['top'].set_visible(False)axs.spines['right'].set_visible(False)axs.spines['left'].set_visible(False)axs.yaxis.set_ticks_position('left')axs.set_xlim((-0.05,1.05))axs.set_ylim((0,1))axs.set_yticks([0],labels=['score'])

对于多张一维散点图的绘制,只需要利用subplot函数,对子图重复进行上述操作即可。整体代码如下:

def score_distr(group,x_lim=(-0.1,1.1),y_lim=(-0.1,1.1)):    '''    可视化N个类别中每个样本的y分布    :param group: List[np.ndarray], N类样本标签y组成的数组    :param x_lim: 横坐标区间    :param y_lim: 纵坐标区间    :return:    '''    group_num=len(group)    color_map=["violet","tomato","cyan","salmon","limegreen"]    fig,axs=plt.subplots(group_num,1)    dem_labels=[]    for i in range(group_num):        axs[i].scatter(group[i],[0.05]*group[i].shape[0],label="class_"+str(i),c=color_map[i])        # axs[i].xlim(x_lim)        dem_labels.append("class_"+str(i))        axs[i].spines['top'].set_visible(False)        axs[i].spines['right'].set_visible(False)        axs[i].spines['left'].set_visible(False)        axs[i].yaxis.set_ticks_position('left')        axs[i].set_xlim(x_lim)        axs[i].set_ylim(y_lim)        axs[i].set_yticks([0],labels=['score'])    fig.legend(dem_labels,loc=(0.45,0.85))

测试结果

给出示例代码及对应结果如下:

test=[]for i in range(3):    test.append(np.random.rand(15))score_distr(test,x_lim=(-1.05,1.05))

结果:

matplotlib如何实现一维散点分布图

以上就是关于“matplotlib如何实现一维散点分布图”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯