标签:10 plt cate python label 绘图 X1 scatter
散点图
导包
1 import numpy as np 2 import pandas as pd 3 import matplotlib as mpl 4 import matplotlib.pyplot as plt 5 import seaborn as sns
二维图(一个标签)
X1是10个随机数,满足正态分布,y与X1线性相关。
1 X1=np.random.randn(10) 2 y=X1+X1**2-3
1 # 确定画布尺寸 2 plt.figure(figsize=(8,4)) 3 # 绘图 4 plt.scatter(X1,y,s=50,c='red',label='Positive') #s是点的大小 5 #显示label 6 plt.legend()
效果图如下.
图1-1 X1与y的图形
二维图(两个标签)
X1是一个二维数组,10行2列。我将X1的第一列数据作为X轴,X1的第二列数据作为Y轴,一共可绘制除10个点。10个点分为两类,类别对应数组cate,0为一类,1为一类.
1 X1=np.random.randn(10,2) 2 cate=[0,1,1,1,0,1,1,0,0,1] 3 plt.scatter(X1[:,0],X1[:,1],s=20,c=cate)
图形绘制如下.
图 1-2 X1[:,0]与X1[:,1]对应关系
由图可知,虽然已经画出了十个点,并且分为了两类,但是并没有显示两个label.scatter里面的label属性只能填一个值,不能填多个值或是传入数组.为了显示对应的图例,我们
需要借助循环.为了方便说明,我先将所有分类列举出来。
我们通过y==0和y==1筛选出两个类型的数据,然后利用将x和y的数据分开,最后给不同类别添上不同的颜色和标签名。
1 plt.scatter(X1[y==0,0],X1[y==0,1],s=20,c='r',label='zero') 2 plt.legend()
1 plt.scatter(X1[y==0,0],X1[y==0,1],s=20,c='r',label='zero') 2 plt.scatter(X1[y==1,0],X1[y==1,1],s=20,c='g',label='one') 3 plt.legend()
图1-3 zero类的数据散点图 图1-4 zero类和one类的数据散点图
借助for循环画图
1 colors=['blue','green'] 2 labels=['good','bad'] 3 for i in range(2): 4 plt.scatter(X1[y==i,0],X1[y==i,1],c=colors[i],label=labels[i]) 5 plt.legend()
图 1-5 for循环实现散点图
二维图(多个标签)
查看某个特征里的所有取值,以及取值个数
1 uniq=np.unique(data['category']) 2 len(uniq)
图 2-1 特征category取无重复值个数 图2-2 特征category共能取14种值
由图可知,我们会使用到始终不同的颜色去渲染图表,这里我们可以使用plt给我们提供的光谱。
1 color=plt.cm.tab10(5.2) 2 # 每一个浮点数代表一种颜色
图2-3 color对应颜色的rgba
我们规定横坐标为特征area,纵坐标为特征poptoral,一共分为14类。
循环次数是类别个数,x轴是对应类别的area特征,y轴是对应类别的poptotal特征,我们颜色借助了光谱,在导入颜色时要将颜色数据转换成二维数组。
1 for i in range(len(cate)):
plt.scatter(data.loc[data.category==cate[i],'area'],data.loc[data.category==cate[i],'poptotal'],s=20,c=np.array(plt.cm.tab10(i/len(cate))).reshape(1,-1),label=cate[i]) 2 plt.legend()
图 2-4 area和poptotal散点图
标签:10,plt,cate,python,label,绘图,X1,scatter 来源: https://www.cnblogs.com/ld66/p/15358024.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。