我尝试将marker参数设置为列表或者和数据等长的列表也无济于事(官方也没有提供)。

用到数据:

# 这是用到的数据
# 分别是X[:, 0],X[:, 1], y
"""
(array([ 9.96346605, 11.0329545 , 11.54155807,  8.69289001,  8.1062269 ,8.30988863, 11.93027136,  9.67284681,  8.34810316,  8.67494727,9.17748385, 10.24028948,  8.68937095,  8.92229526,  9.49123469,9.25694192,  7.99815287,  8.18378052,  8.7337095 ,  9.32298256,10.06393839,  9.50048972,  8.34468785,  9.50169345,  9.15072323,11.563957  ]),array([ 4.59676542, -0.16816717,  5.21116083,  1.54322016,  4.28695977,4.80623966,  4.64866327, -0.20283165,  5.13415623,  4.47573059,5.09283177,  2.45544401,  1.48709629, -0.63993225,  4.33224792,5.13284858,  4.8525051 ,  1.29564214,  2.49162431,  5.09840649,0.99078055, -0.26430318,  1.63824349,  1.93824624,  5.49832246,1.3389402 ]),array([1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0,0, 0, 1, 0]))
"""

下面是我的改善方法:

# 实现一种算法,解决scatter函数不可以一图多种形状的问题
import matplotlib.pyplot as plt
import numpy
import pandas
from typing import Any
# 思路: 分类点,然后分类画
def scatterDing(X : list or tuple or numpy.ndarray,y : list or tuple or numpy.ndarray,aim : list or tuple or numpy.ndarray,markers : dict,func : Any,**kwargs):""":param X: 横坐标集:param y: 纵坐标集:param markers: 对于某一符合集样式,markers是这些不同符合集的组成的字典,如{1 : '>', 0: '*'}:param aim: 决定性标签,比如对这类数据的分类:param func: 你所规定的算法,该函数返回值必须是字典组成的列表,因为要用来充当scatter参数:param kwargs: scatter接口参数:return:"""assert set(aim).issubset(set(list(markers.keys()))) == True# 开始分类# 按照你设计的算法返回marker_s :list = func(X, y, aim, markers)for i in marker_s:plt.scatter(**i, **kwargs)def apiFunc(X, y, aim, markers):a = numpy.c_[X, y, aim]df = pandas.DataFrame(a)reli = []for i in list(set(markers.keys())):index = numpy.where(df[2] == i)[0]x_ = [X[ii] for ii in index]y_ = [y[ii] for ii in index]dict_s = dict(x=x_, y=y_, marker=markers[i])reli.append(dict_s)return reliscatterDing(X[:, 0], X[:, 1], y, {1 : 'o', 0: '*'}, apiFunc, s=105)

注: 这里scatterDing是实现函数,他的参数实质是继承了scatter原有参数,只不过通过调用func参数来实现scatter几个常用的参数。因此,func必须是一个返回字典组成列表的函数,你可以通过设计自己的分类方法,来决定新的画图方式,这里我的思路是将某一类的点赋予一种点状,以此类推,因此使用了:

assert set(aim).issubset(set(list(markers.keys()))) == True

断言——你分的类需要的种类是否是提供每种类对应点状集合的子集

效果展示:

下面来尝试一下三类点,从创建一个新类2开始。(这样属于对应值0、1、2三种类):

# 先创建更多数据并且合并
newS = numpy.random.rand(8) + numpy.random.randint(7, 13, 8)
newy = numpy.random.rand(8) + numpy.random.randint(-1, 6, 8)
newaim = numpy.ones(8, dtype=numpy.uint8) * 2
x1 = numpy.r_[X[:, 0], newS]
x2 = numpy.r_[X[:, 1], newy]
aiim = numpy.r_[y, newaim]
# 试效果
scatterDing(x1, x2, aiim, {1 : 'o', 0: '*', 2: 's'}, apiFunc, s=105)

效果很让我满意!

这里注意一个问题:由于scatter本来参数c可以根据不同目标类设置不同颜色(也只是颜色),但是我这个新方法是不能写入c参数的,这并不是一个缺陷,反而,scatter本就可以根据不同组点自动划分颜色,恰好我的这个新函数正符合这一特性(从上面两个图就可以看到)。(对于其他参数,不幸的是,我并没有测试是否有缺陷,不过目前这个方法对我来说刚好够用@_@。)

针对matplotlib.pyplot.scatter函数不可以通过marker参数对不同类别点设置多种形状的问题的改善方法相关推荐

  1. matplotlib.pyplot.scatter( )绘制散点图与双月形图

    matplotlib.pyplot里的函数scatter( )用于绘制散点图.学习Matplotlib绘图其实就是学习绘图函数中的参数,不同的参数搭配会产生不同的化学效应! scatter( )函数包 ...

  2. pyplot.scatter函数绘制散点图

    可以使用matplotlib中的pyplot.scatter函数绘制散点图,scatter函数与plot函数的用法是类似的,只是plot函数是用来绘制点与点之间连续的曲线的,scatter函数中的参数 ...

  3. pyplot.scatter函数介绍

    转自:http://blog.csdn.net/u013634684/article/details/49646311 最近开始学习python编程,遇到scatter函数,感觉里面的参数不知道什么意 ...

  4. Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot)、通过size参数指定数据点的大小、自定义不同分组的气泡的色彩

    Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot).通过size参数指定数据点的大小.自定义不同分组的气泡的色彩 目录

  5. Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot)、通过size参数指定数据点的大小

    Matplotlib使用scatter函数在Python中绘制气泡图(bubble plot).通过size参数指定数据点的大小 目录

  6. matplotlib.pyplot.scatter API

    https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html?highlight=scatter#matplotlib.pyplo ...

  7. python matplotlab.pyplot.scatter() 函数的用法

    引用文章1: PYthon--plt.scatter各参数详解 https://blog.csdn.net/qiu931110/article/details/68130199 引用文章2: pyth ...

  8. matplotlib.pyplot绘制函数图像希腊字母latex效果设置

    matplotlib.pyplot绘制函数图像希腊字母latex效果设置 用matplotlib绘制函数图像时,有时候为了图形的含义更加清晰明了,需要在函数图形的备注上标明函数表达式,此时往往涉及到用 ...

  9. Python matplotlib.pyplot.hist函数 参数详解(超详细的!)

    matplotlib.pyplot.hist函数 参数详解 函数内容 matplotlib.pyplot.hist(x, bins=None, range=None, normed=False, we ...

最新文章

  1. 智能驾驶操作系统OS
  2. 现场丨2017中国计算机大会(CNCC2017)之李飞飞演讲:ImageNet之后,计算机视觉何去何从?
  3. [翻译]Json.NET API-Linq to Json Basic Operator(基本操作)
  4. sqlserver中常用的几个存储过程
  5. python网络编程知识点_python 网络编程要点
  6. [VBA] 设置行高和列宽,以及全选单元格
  7. CSV Data Set Config设置
  8. 搜狗加入鹅厂,将成为腾讯间接全资子公司!
  9. 解决在Windows 2003的 IIS 6.0 中无法上传超过200K的附件以及无法下载超过4M的附件问题...
  10. ktv管理系统_7天撸完KTV点歌系统,含后台管理系统(完整版)
  11. DataTable类(MSDN)
  12. java中的变量是原子的_Java原子变量
  13. 老白聊数据-关于销售预测的那些事
  14. Axure RP 8 for Mac(交互式原型设计工具)汉化版
  15. 如何用Mac 自带的 Automator 进行图片格式转换?
  16. Javascript使用模板字符串,find,findIndex,some,every查找数据以及map,filter过滤数据,reduce求和或平均值
  17. 浪潮服务器【磁盘阵列】故障修复
  18. Android 外置 SD 卡写入权限问题
  19. 初中学历程序员面试被HR吐槽,初中学历还有要月薪3万5,到底是学历重要还是能力重要?...
  20. 物竞天择2 NS2 -MOD制作教程 -制作工具

热门文章

  1. 10月11月黑科技资源大全总结
  2. 解决thinkpad笔记本启动虚拟机出现“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。“
  3. js数组随机排列组合
  4. supesite 模板标签详解!
  5. 全国DNS的IP一览
  6. java arraylist静态初始化_Java 中初始化 List 集合的 6 种方式!
  7. png格式批量转换jpg有什么方法
  8. python 嵌套_如何执行嵌套的python文件
  9. 【Cocos2d-html5游戏引擎学习笔记(6)】自定义Cocos2d-html5加载资源Loading界面
  10. 头歌实训之python字典入门