资讯专栏INFORMATION COLUMN

如何使用Python matplotlib绘制散点图

89542767 / 760人阅读


  今天给大家分享一个经典案例,那就是在Python matplotlib,如何完整的绘制成功一个散点图,其实,如果想要绘制的话,还是比较麻烦的。但是如果我们使用Python matplotlib的话,绘制的就会比较好,怎么绘制呢?下面就给大家详细的解答下。


  什么是散点图?


  所谓的散点图,指的是在相关的数据分析当中,数据会依次分布在直角坐标系当中,散点图是变量跟着自变量去进行变动,据此可以选择合适的函数对数据点进行拟合。


  用组成的数据,做成数据的相关集合点,考察相关坐标点的一个分布情况,判断两变量之间是否存在某种关联或总结坐标点的分布模式。


  散点图将序列显示为一组点。值由点在图表中的位置表示。类别由图表中的不同标记表示。散点图通常用于比较跨类别的聚合数据。


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


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

01.png

  散点图一行代码显示


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

02.png

  加颜色的散点图


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

03.png

  颜色深浅表示数值大小


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

04.png

  散点图显示颜色和大小


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

05.png

  自定义图表散点图


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

06.png

  散点图万能模板


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

07.png

  其他模板


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

08.png

 

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

09.png

 

   plt.scatter(df['burglary'],df['larceny_theft'],
  s=df['population']*2e-5,
  c=df['motor_vehicle_theft'],cmap=plt.cm.coolwarm,
  edgecolors='b',
  alpha=0.75)
  for idx,statename in df['state'].items():
  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')
  df.plot.scatter(x='burglary',y='larceny_theft',c='motor_vehicle_theft',cmap=plt.cm.coolwarm,s=df['population']*2e-5)
  for i in df.index:
  if i in top5_motor_theft_index:#偷车贼最多的5个州
  plt.text(df.loc[i,'burglary']+10,df.loc[i,'larceny_theft']-10,df.loc[i,'state'],color='red')#一个文本框

12.png

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127977.html

相关文章

  • Python数据分析:折线图和点图绘制

    摘要:绘制折线图和散点图要用到下的,因此我们需要先引入,因为要用到数组实现,还要引入。如果让折线图和散点图叠加还可以突出每个点。 1.绘制折线图和散点图要用到matplotlib下的pylab,因此我们需要先引入,因为要用到数组实现,还要引入numpy。然后确定x轴和y轴的数据,最后将其呈现出来。 import matplotlib.pylab as pyl import numpy as ...

    jifei 评论0 收藏0
  • Python数据可视化matplotlib.pyplot

    摘要:删除数据点的轮廓设置每个坐标轴的取值范围使用颜色映射允许你给散点图中的各个点指定颜色。默认为蓝色点和黑色轮廓,在散点图包含的数据点不多时效果很好。但绘制很多点时,黑色轮廓可能会粘连在一起。 1.安装matplotlib pip install matplotlib 2.绘制简单图形 import matplotlib.pyplot as plt #图形输入值 input_values...

    Acceml 评论0 收藏0
  • Python数据分析:seaborn

    摘要:,绘制盒形图,同样指定对数据的分类。如果传入则画出的盒形图是横向的。绘制小提琴图,表示是否将两类数据分开绘制,如果为,则不分开绘制,默认为。数据集数据集名。计算置信区间时使用的引导迭代次数整数。 seaborn是python中的一个非常强大的数据可视化库,它集成了matplotlib,下图为seaborn的官网,如果遇到疑惑的地方可以到官网查看。http://seaborn.pydat...

    LeexMuller 评论0 收藏0
  • Python数据分析:seaborn

    摘要:,绘制盒形图,同样指定对数据的分类。如果传入则画出的盒形图是横向的。绘制小提琴图,表示是否将两类数据分开绘制,如果为,则不分开绘制,默认为。数据集数据集名。计算置信区间时使用的引导迭代次数整数。 seaborn是python中的一个非常强大的数据可视化库,它集成了matplotlib,下图为seaborn的官网,如果遇到疑惑的地方可以到官网查看。http://seaborn.pydat...

    superPershing 评论0 收藏0
  • ☀️苏州程序大白一文从基础手把手教你Python数据可视化大佬☀️《❤️记得收藏❤️》

    ☀️苏州程序大白一文从基础手把手教你Python数据可视化大佬☀️《❤️记得收藏❤️》 目录 ?️‍?开讲啦!!!!?️‍?苏州程序大白?️‍??博主介绍前言数据关系可视化散点图 Scatter plots折线图强调连续性 Emphasizing continuity with line plots同时显示多了图表 数据种类的可视化 Plotting with categorical da...

    Drinkey 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<