python画散点图-python中画散点图

示例代码:

import numpy as np

import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

data = np.random.randint(0, 255, size=[40, 40, 40])

x, y, z = data[0], data[1], data[2]

ax = plt.subplot(111, projection='3d') # 创建一个三维的绘图工程# 将数据点分成三部分画,在颜色上有区分度ax.scatter(x[:10], y[:10], z[:10], c='y') # 绘制数据点ax.scatter(x[10:20], y[10:20], z[10:20], c='r')

ax.scatter(x[30:40], y[30:40], z[30:40], c='g')

ax.set_zlabel('Z') # 坐标轴ax.set_ylabel('Y')

ax.set_xlabel('X')

plt.show()

今天想在散点图的某些特定的点外面画圆圈标记,从下面的文章找到一些灵感,只要在原来的散点图上面给指点添加相应的标志,设置其透明度就可以实现该想法。

顺便复习下散点图的用法。

大家平时为了直观地显示数据的分布情况,在画散点图的时候,简单地把数据点用圆点标出来,像这样:

20161130214346761

这样:

20161130214804059

20161130214831279

还有这样:

20161130220134174

然而今天我想给大家展示的散点图,或许没有那么直观地反映数据的分布情况,不够实用,但是真的很美很艺术,每个的点的颜色和大小都不一样,形状也是多变的。比如五角星的散点图:

20161130220624567

圆点的散点图:

20161130221007209

Y形的散点图:

20161130221251281

等等还有很多,那么这些漂亮的形状是怎么画出来的呢?其实代码很简单:

from numpy import *;

N = 50 # 点的个数

x = np.random.rand(N) * 2 # 随机产生50个0~2之间的x坐标

y = np.random.rand(N) * 2 # 随机产生50个0~2之间的y坐标

colors = np.random.rand(N) # 随机产生50个0~1之间的颜色值

area = np.pi * (15 * np.random.rand(N))**2 # 点的半径范围:0~15

# 画散点图

plt.scatter(x, y, s=area, c=colors, alpha=0.5, marker=(9, 3, 30))

plt.show()

这里用到一个matplotlib.pyplot子库中画散点图的函数

matplotlib.pyplot.scatter(x, y, s=20, c=None, marker='o',

cmap=None, norm=None, vmin=None, vmax=None, alpha=None,

linewidths=None, verts=None, edgecolors=None, hold=None,

data=None, **kwargs)

这个函数接收的参数很多,有默认值的平时也不需要我们指定,是可选的,这次我们用到的除了基本的x ,y参数,还有c,s,alpha和marker,c就是为点指定的颜色数组,s是点的面积大小,alpha是点的颜色的透明度,marker是指定点标记的形状。在例子里指定透明度为0.5,c和s是随机生成的,我们要改变的是marker的值,marker有很多值可供选择,下表展示了在例子代码的基础上,改变marker的值后的效果:

markerresult

”.”

20161130223527561

”,”

20161130223632533

"o”

20161130223931269

"v”

20161130224045348

"^”

20161130224159601

"<”

20161130224252021

">”

20161130224628513

"1”

20161130224801883

"2”

20161130224842297

"3”

20161130224924712

"4”

20161130225019955

"8”

20161130225116025

"s”

20161130225158582

"p”

20161130225235901

"*”

20161130225405495

"h”

20161130225453664

"H”

20161130225551258

"+”

20161130225629790

"x”

20161130225811981

"D”

20161130225851809

"d”

20161130225936826

"

"_”

20161130230136407

"None”

没错就是什么都没有。。。

20161130230858762

"$…$”

20161130231122219

(numsides, style, angle)

eg:(9,0, 30)

注:numsides是边的个数,

angle是旋转角度,

style只有0,1,2,3四个值

20161130232259477

(numsides, style, angle)

eg:(9,1, 30)

20161130232415134

(numsides, style, angle)

eg:(9,2, 30)

20161130232530291

(numsides, style, angle)

eg:(9,3, 30)

注:此时numsides和angle的值自动被忽略

20161130232613955

……

这么多种点的形状符号够我们用了吧~以后想用哪种查一下就好啦~

你可能感兴趣的:(python画散点图-python中画散点图)