您的位置:首页 > 编程语言 > PHP开发

matplotlib 使用总结——散点图

2019-01-09 20:25 477 查看

一、散点图引入 
什么是散点图? 
反映两组变量每个数据点的值,并且从散点图可以看出它们之间的相关性。单看概念可能不太好理解,我们可以从一个例子说起。下面我们通过例子边学边做。 
在做散点图之前,最重要的是我们得有数据啊,数据很重要。这里我们利用关于karate--deepwalk.embeddings的数据,假设存储在目录C:\Users\WBL\Desktop\DeepWalk\karate--deepwalk.embeddings.csv中,数据全文为

label x y
34 -0.60476 -0.71091
1 0.311671 -0.88602
33 -0.7206 -0.72734
3 -0.12409 -0.77231
2 0.284264 -0.8668
4 0.273538 -0.86838
32 -0.4155 -0.74076
14 0.066654 -0.81539
24 -0.80765 -0.69245
9 -0.23795 -0.74187
6 0.801222 -1.01542
7 1.02443 -1.12159
28 -0.63256 -0.71611
30 -0.89666 -0.69355
8 0.081434 -0.81575
31 -0.39702 -0.72797
25 -0.83234 -0.69107
5 0.805114 -1.02388
20 -0.0225 -0.80833
26 -0.78295 -0.70043
11 0.776621 -1.00543
29 -0.41022 -0.7247
17 1.083 -1.10963
19 -0.83465 -0.70858
15 -0.75736 -0.69438
13 0.340806 -0.87363
10 -0.44032 -0.72752
22 0.422973 -0.90371
21 -0.78695 -0.69475
27 -0.9448 -0.66912
16 -0.75029 -0.69804
18 0.382226 -0.90165
23 -0.78915 -0.73798
12 0.563045 -0.94381

首先要将数据读取进来,大致对数据进行浏览,看以下代码:

[code]import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_csv(r"C:\Users\WBL\Desktop\DeepWalk\karate--deepwalk.embeddings.csv") ---r为转义字符
print(df.head())

输出为:

     label           x                    y
0     34    -0.604761     -0.710905
1      1    0.311671       -0.886024
2     33   -0.720595     -0.727339
3      3   -0.124094      -0.772308
4      2    0.284264      -0.866799

df.head()默认返回数据集的前五行数据,浏览以下数据集的所有属性,以及取值如何,这里我们先拿“x”和“y”来做实例以理解散点图。当然,你也可以用其他属性。

[code]plt.scatter(df["x"],df["y"])
plt.show()

完善的散点的图是怎样的,它需要哪些参数呢? 

首先要 生成一个figure对象和一个坐标系(理解为子图也可以)axes对象,并且创建一个图形区域宽和高的比例为8:5(可以自行设置),分辨率为每英寸80像素的图,还有fontsize则是字体的大小(可自行设置)

 

上例子及代码中可以看到,我们在绘制散点图时候,用到了ax.scatter(df[“mpg”],df[“wt”])函数,关于scatter()函数看下都有哪些参数:ax.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None,vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, , data=None, *kwargs) 
其中的x和y在上面我们的例子中应该就已经理解了,而s代表了点的大小,如果s输入的是一个固定值,那么就只是单纯的改变散点的大小(可以自己设置),这里我们增加一些知识,如果让点的大小也成为一个维度,这样的话就可以表示三个维度数据之间的联系,先看示例:

这个图相比一般散点图多了一个维度的数据,即将第三个维度的数据大小(这里是数据集中的“disp”)以气泡(参数alpha表示透明度,可以自行设置)大小示意。像这样需要第三个维度的应用场景为:在研究2个变量的关系时,需要加入连续型变量作为第三维度。 
而c代表的是点的填充颜色,可以参考文档设置定值来填充不同的颜色。这里我们还利用该数据集的一个“vs”特征来作为第三维度,通过的“vs”的观察可以看出vs只有两个不同的取值0和1。我们就用“vs”的值来作为c的值,以此来查看数据的分步情况:

但是我们发现好像缺了点什么:我们不知道黄色代表什么值,紫色代表什么值,对吧?因此我们需要添加1个图例来表明每个颜色代表的是什么数据,思路是因为vs只有0,1两种值,那么我只需要提取出满足vs==0的数据(mpg和wt)和满足vs==1的数据(mpg和wt),然后在1张图上用2套数据源画2种颜色的散点图即可: 

# -- coding: utf-8
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_csv(r"C:\Users\WBL\Desktop\DeepWalk\karate--deepwalk.embeddings.csv")  # r为转义字符
# print(df.head())
# plt.scatter(df["x"],df["y"])
# plt.show()

fig,ax = plt.subplots(figsize = (8,5),dpi = 70)  #figsize:宽和高比例,dpi:分辨率
ax.scatter(df["x"],df["y"],alpha=1,c=df["label"])  #制作关于x,y的散点图
ax.set_xlabel("x",fontsize=15)
ax.set_ylabel("y",fontsize=15)
ax.set_title("karate--deepwalk.embeddings",fontsize=20)
# ax.set_xlim(1.5,1.5) #x轴调整取值范围
# ax.set_ylim(-1.5,0)
plt.show()

 

 

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: