Python教程

python绘图

本文主要是介绍python绘图,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

散点图

导包

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散点图

 

 

 

 

 

 

   

   

 

这篇关于python绘图的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!