51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3395|回复: 0
打印 上一主题 下一主题

[求助] 如何将matplotlib中的annotate的标记从圆圈改成加号或点?

[复制链接]
  • TA的每日心情
    无聊
    3 天前
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    #
    发表于 2019-2-21 09:41:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    1测试积点
    统计一个数据的异常点,用箱型图分析,异常点标注的是用圆圈,因为有几个值几乎重叠,圆圈看着太大了,看了官方文档也找不到在哪里改标注,不懂哪里修改成'+'。
    1. #-*- coding: utf-8 -*-
    2. import pandas as pd

    3. catering_sale =  r'C:\Users\81284\OneDrive\python datamining\Python数据分析与挖掘实战\chapter3\demo\data\catering_sale.xls' #餐饮数据
    4. data = pd.read_excel(catering_sale, index_col = u'日期') #读取数据,指定“日期”列为索引列

    5. import matplotlib.pyplot as plt #导入图像库
    6. plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
    7. plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号

    8. plt.figure() #建立图像
    9. p = data.boxplot(return_type='dict') #画箱线图,直接使用DataFrame的方法
    10. x = p['fliers'][0].get_xdata() # 'flies'即为异常值的标签
    11. y = p['fliers'][0].get_ydata()
    12. y.sort() #从小到大排序,该方法直接改变原对象

    13. #用annotate添加注释
    14. #其中有些相近的点,注解会出现重叠,难以看清,需要一些技巧来控制。
    15. #以下参数都是经过调试的,需要具体问题具体调试。
    16. for i in range(len(x)):
    17.   if i>0:
    18.     plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i]))
    19.   else:
    20.     plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i]))

    21. plt.show() #展示箱线图
    复制代码


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 19:28 , Processed in 0.063805 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表