matplotlib绘制散点图之基本配置——万能模板案例

举报
王小王-123 发表于 2022/03/27 02:37:57 2022/03/27
【摘要】 目录 散点图  散点图一行代码显示  加颜色的散点图 颜色深浅表示数值大小 散点图显示颜色和大小 自定义图表散点图 散点图万能模板 其他模板 每文一语 散点图 散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行...

目录

散点图

 散点图一行代码显示

 加颜色的散点图

颜色深浅表示数值大小

散点图显示颜色和大小

自定义图表散点图

散点图万能模板

其他模板

每文一语


散点图

散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量变化的大致趋势,据此可以选择合适的函数对数据点进行拟合

用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。散点图将序列显示为一组点。值由点在图表中的位置表示。类别由图表中的不同标记表示。散点图通常用于比较跨类别的聚合数据。

下面给出一个散点图的具体代码案例


  
  1. import matplotlib.pyplot as plt
  2. import pandas as pd
  3. import numpy as np
  4. plt.figure(figsize=(9,5), # (宽度 , 高度) 单位inch
  5. dpi=120, # 清晰度 dot-per-inch
  6. # facecolor='#CCCCCC', # 画布底色
  7. # edgecolor='black',linewidth=0.2,frameon=True, # 画布边框
  8. #frameon=False # 不要画布边框
  9. )
  10. # 设置全局中文字体
  11. plt.rcParams['font.sans-serif'] = 'KaiTi' # 设置全局字体为中文 楷体
  12. plt.rcParams['axes.unicode_minus'] = False # 不使用中文减号
  13. #读取数据
  14. crime=pd.read_csv("crimeRatesByState2005.csv")
  15. print (list(crime.murder))#转化成列表
  16. #删除state为United States的数据
  17. crime2 = crime[crime.state != "United States"]
  18. #删除state为District of Columbia的数据
  19. crime2 = crime2[crime2.state != "District of Columbia" ]
  20. z = list(crime2.population/10000)#取人口数据
  21. #colors = np.random.rand(len(list(crime2.murder)))#根据谋杀率随机去颜色
  22. cm = plt.cm.get_cmap('RdYlBu')#使用色谱RdYlBu
  23. plt.scatter(list(crime2.murder), list(crime2.burglary), s=z,c=z,cmap = cm, linewidth = 0.5, alpha = 0.5)#绘制散点图
  24. plt.xlabel("murder")
  25. plt.ylabel("burglary")
  26. plt.show()

 散点图一行代码显示


  
  1. # 读取数据
  2. df = pd.read_csv('iris.csv')
  3. # 平面坐标系的位置只能表示2维数据
  4. x = df['sepal_length']
  5. y = df['sepal_width']
  6. # 根据X,Y值画散点图
  7. plt.scatter(x,y)

 加颜色的散点图


  
  1. # 读取数据
  2. df = pd.read_csv('iris.csv')
  3. # 平面坐标系的位置只能表示2维数据
  4. x = df['sepal_length']
  5. y = df['sepal_width']
  6. c = df['species'].map({'setosa':'r','versicolor':'g','virginica':'b'})
  7. # 根据X,Y值画散点图, 用不同的颜色标识不同的分类
  8. plt.scatter(x,y, c=c)

颜色深浅表示数值大小


  
  1. # 读取数据
  2. df = pd.read_csv('iris.csv')
  3. # 平面坐标系的位置只能表示2维数据
  4. x = df['sepal_length']
  5. y = df['sepal_width']
  6. c = df['petal_length']
  7. # 根据X,Y值画散点图, 用颜色的深浅表示花萼的长度
  8. plt.scatter(x,y, c=c, cmap=plt.cm.RdYlBu)

散点图显示颜色和大小


  
  1. # 读取数据
  2. df = pd.read_csv('iris.csv')
  3. # 平面坐标系的位置只能表示2维数据
  4. x = df['sepal_length'] # x 轴坐标
  5. y = df['sepal_width'] # y 轴坐标
  6. c = df['petal_length'] # 颜色color
  7. s = df['petal_width'] # 大小size
  8. # 根据X,Y值画散点图, 用颜色的深浅表示花萼的长度,用大小表示花萼的宽度
  9. plt.figure(figsize=(5,5),dpi=100)
  10. #plt.scatter(x,y, c=c, s=50) # 可以是标量,那么所有的点都一样
  11. plt.scatter(x,y, c=c, s=s*30)

自定义图表散点图


  
  1. # 读取数据
  2. df = pd.read_csv('iris.csv')
  3. def get_xycs(df):
  4. # 平面坐标系的位置只能表示2维数据
  5. x = df['sepal_length'] # x 轴坐标
  6. y = df['sepal_width'] # y 轴坐标
  7. c = df['petal_length'] # 颜色color
  8. s = df['petal_width'] # 大小size
  9. return x,y,c,s
  10. markers = {'setosa':'o', 'versicolor':'D', 'virginica':'*'}
  11. # 根据X,Y值画散点图, 用颜色的深浅表示花萼的长度,用大小表示花萼的宽度, 每组数据只能是一种点样式
  12. plt.figure(figsize=(5,5),dpi=100)
  13. #plt.scatter(x,y, c=c, s=50) # 可以是标量,那么所有的点都一样
  14. for sp in df['species'].unique():
  15. x,y,c,s = get_xycs(df[df['species']==sp])
  16. plt.scatter(x,y, c=c, s=s*30, cmap=plt.cm.seismic, marker=markers[sp],label=sp)
  17. plt.legend()

散点图万能模板


  
  1. # 读取数据
  2. df = pd.read_csv('iris.csv')
  3. def get_xycs(df):
  4. # 平面坐标系的位置只能表示2维数据
  5. x = df['sepal_length'] # x 轴坐标
  6. y = df['sepal_width'] # y 轴坐标
  7. c = df['petal_length'] # 颜色color
  8. s = df['petal_width'] # 大小size
  9. return x,y,c,s
  10. markers = {'setosa':'o', 'versicolor':'D', 'virginica':'*'}
  11. # 根据X,Y值画散点图, 用颜色的深浅表示花萼的长度,用大小表示花萼的宽度, 每组数据只能是一种点样式
  12. plt.figure(figsize=(5,5),dpi=100)
  13. #plt.scatter(x,y, c=c, s=50) # 可以是标量,那么所有的点都一样
  14. for sp in df['species'].unique():
  15. x,y,c,s = get_xycs(df[df['species']==sp])
  16. plt.scatter(x,y, s=s*30, cmap=plt.cm.seismic, marker=markers[sp],label=sp)
  17. plt.legend()

其他模板


  
  1. ### 在二维坐标系上,位置表示(x,y)二维数据
  2. x = df.sepal_length # x 表示花瓣长
  3. y = df.sepal_width # y 表示花瓣宽
  4. s = (df.petal_length * df.petal_width)*np.pi # s(size) 表示花萼面积
  5. c = (df.petal_length * df.petal_width)*np.pi
  6. plt.scatter(x,y,s=s*5, c=c,cmap=plt.cm.RdYlBu_r)
  7. plt.xlabel('sepal_length')
  8. plt.ylabel('sepal_width')


  
  1. # 在二维坐标系上,位置表示(x,y)二维数据
  2. x = df.sepal_length # x 表示花瓣长
  3. y = df.sepal_width # y 表示花瓣宽
  4. s = (df.petal_length * df.petal_width)*np.pi # s(size) 表示花萼面积
  5. #print(df.species)
  6. #colormap = {"setosa":"#FF0000", "versicolor":"green", "virginica":"b"} # 定义一个字典将species字符串映射到颜色字符串上
  7. colormap = {"setosa":1, "versicolor":5, "virginica":6} # 定义一个字典将species字符串映射到颜色字符串上
  8. c = df.species.map(colormap)
  9. #print(c)
  10. plt.scatter(x,y,s=s*5, c=c,cmap=plt.cm.coolwarm, alpha=0.7, edgecolors='face')
  11. plt.xlabel('sepal_length')
  12. plt.ylabel('sepal_width')

 

 


  
  1. plt.scatter(df['burglary'], df['larceny_theft'],
  2. s=df['population']*2e-5,
  3. c=df['motor_vehicle_theft'], cmap=plt.cm.coolwarm,
  4. edgecolors='b',
  5. alpha=0.75)
  6. for idx,statename in df['state'].items():
  7. plt.text(x=df['burglary'][idx],y=df['larceny_theft'][idx]-df['population'][idx]*2e-5*0.5,s=statename,fontsize=6,ha='center',va='top')


  
  1. df.plot.scatter(x='burglary',y='larceny_theft',c='motor_vehicle_theft',cmap=plt.cm.coolwarm,s=df['population']*2e-5)
  2. for i in df.index:
  3. if i in top5_motor_theft_index: # 偷车贼最多的5个州
  4. plt.text(df.loc[i,'burglary']+10, df.loc[i,'larceny_theft']-10, df.loc[i,'state'], color='red') # 一个文本框

 

每文一语

循序渐进

文章来源: wxw-123.blog.csdn.net,作者:王小王-123,版权归原作者所有,如需转载,请联系作者。

原文链接:wxw-123.blog.csdn.net/article/details/123763722

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。