栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python可视化学习二(复杂的散点图)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python可视化学习二(复杂的散点图)

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

#导入数据
midwest = pd.read_csv("midwest_filter.csv")
#查看数据
midwest.head()
midwest.columns
midwest['category']
#提取标签中的类别
categories = np.unique(midwest['category']) #去除重复值,保存唯一值
##为了标签的名称,我们就需要循环和标签的类别数目一样的次数
##所以需要循坏的次数=需要生成的标签的次数=需要生成小数的个数
##只需要在循坏中生成颜色就好了
##所以我们就利用循坏中的i生成14个小数
plt.figure(figsize=(16,10))

for i in range(len(categories)):
   plt.scatter(midwest.loc[midwest['category']==categories[i],'area']
              ,midwest.loc[midwest['category']==categories[i],'poptotal']
              ,s=20
              ,c=np.array(plt.cm.tab10(i/len(categories))).reshape(1,-1)
              ,label= categories[i]        
                       )
plt.legend()
plt.show()

#####对于我们想要给不同的类型添加不同的标签的做法
######列表推导式###########################
colors=[plt.cm.tab10(i/float(len(categories)-1))for i in range (len(categories))]

colors =[]
for i in range(len(categories)):
    colors.append(plt.cm.tab10(i/float(len(categories)-1))) 
##############################################
###丰富我们的图像
###预设图像的各种属性#####
large = 22 ;med = 16 ; small =12;
params = {'axes.titlesize':large, #子图上标题的大小
         'legend.fontsiz':med,   #图列的字体的大小
          'figure.figsize':(16,10), #图像的画布的大小
          'axes.labelsize': med,  #标签的字体大小
          'xtick.labelsize': med,   #x轴上标尺的字体的大小
          'ytick.labelsize': med,  #y轴上标尺的字体的大小
         'figure.titlesize': large   #整个画布的标题字体大小
         }


#plt.rcParams.update(params)  #设置各种各样的默认属性
#plt.style.use('seaborn-whitegird')#设定各种风格有很多属性
sns.set_style('white')#设定背景风格
###准备标签和颜色列表
categories = np.unique(midwest['category'])
colors=[plt.cm.tab10(i/float(len(categories)-1))for i in range (len(categories))]
##########建立画布
plt.figure( figsize=(16,10),  #绘图尺寸
             dpi=80,          #图像的分辩率
            facecolor ='w',  #图像的背景颜色,设置为白色,默认为白色
            edgecolor ='k' #图像的背景颜色,设置为黑色,默认为黑色

)
##############循坏绘图
for i ,category in enumerate(categories):
    plt.scatter('area','poptotal',
                data=midwest.loc[midwest.category==category,:],
               s=20,c=np.array(colors[i]).reshape(1,-1),label=str(category))
    
#注意到这里的数据或去方式和我们之前绘图的不一样了吗?
#我们不仅可以输入横纵坐标,也可以输入横纵坐标的名字,然后使用data这个参数来传入全数据集
#我们不仅可以循坏i,还可以对i和category一同循坏
#############对图像进行装饰############
#plt.gca() 获取当前的子图,如果当前没有子图的话,就帮我创建一个新的子图
plt.gca().set(xlim=(0.0,0.12),ylim=(0,80000))#控制横纵坐标的范围
plt.xticks(fontsize=12)  #坐标轴上的尺寸的字的大小
plt.yticks(fontsize=12)
plt.ylabel('Population',fontsize=12)#坐标轴上的标题和字体的大小
plt.xlabel('Area',fontsize=22)
plt.title('scatterplot of Midwest Area vs Population',fontsize =22)#整个图像的标题和字体的大小
plt.legend(fontsize =12)  #图例的字体的大小
plt.show()
             

###########################################################两者循化的比较
for i in range(len(categories)):
   plt.scatter(midwest.loc[midwest['category']==categories[i],'area']
              ,midwest.loc[midwest['category']==categories[i],'poptotal']
              ,s=20
              ,c=np.array(plt.cm.tab10(i/len(categories))).reshape(1,-1)
              ,label= categories[i]        
                       )



for i ,category in enumerate(categories):
    plt.scatter('area','poptotal',
                data=midwest.loc[midwest.category==category,:],
               s=20,c=np.array(colors[i]).reshape(1,-1),label=str(category))
    
#######################################################

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/580696.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号