Python可视化-散点图与彩色散点图

散点图与彩色散点图都是表示XY轴坐标之间的变化关系。

但是彩色散点图中点的颜色各有不同。

一、数据文件准备

1、value.txt

0,3.19
1,2.7
2,2.51
3,2.78
4,2.61
5,3.13
6,3.14
7,2.69
8,2.51
9,3.15
10,3.15
11,3.15
12,3.15

第一列是序号索引,第二列是价格数值。

散点图X轴和Y轴分别描绘序号与价格。

2、PeopleNumber.csv

city,people,price
NJ ,823,3.19
XZ ,866,2.7
HA,487,2.51
YC,723,2.78
SQ,485,2.61
TZ,464,3.13
YZ,448,3.14
NT,730,2.69
LYG ,447,2.51
ZJ,318,3.15
WX,651,3.15
SZ,1061,3.15
CZ,470,3.15

彩色散点图X轴和Y轴分别描绘人口与价格的关系,用不同颜色标识不同城市。

第一列是城市(缩写)索引,第二列是人口数值,

第三列是价格数值(原为空,由彩色散点图代码中函数写入)。

csv文件本质上就是以逗号(,)分隔开的txt文件,所以用excel打开形式为:


二、导入模块包

可参考Windows下安装Python、matplotlib包 及相关
https://blog.csdn.net/mikasa3/article/details/78942650 

1、numpy

2、pandas

3、seaborn

4、matplotlib

三、完整代码

如下:

import numpy as np  
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
def DrawScatter(read_name):#散点图
    x = np.arange(0,13)  #生成X轴数据,要与Y轴维度相同
    fr = open(read_name,'r')#打开读取的文件
    value_list = []
    value_data = []
    count = 0
    for line in fr.readlines():#遍历打开的文件
        if not len(line):#跳过空行
          continue
        line = line.strip()
        value_list.append(line.split(','))
        value_data.append(float(value_list[count][1]))
        count += 1
    fig = plt.figure()  
    ax1 = fig.add_subplot(111)  #将画布分割成1行1列,图像画在从左到右从上到下的第1块
    ax1.set_title('Scatter Plot')#散点图的标题
    plt.xlabel('people')#X轴标签 
    plt.ylabel('price')#Y轴标签
    #以X轴Y轴数据集分别为x,value_data开始画图,落点颜色为red,样式marker为o
    ax1.scatter(x, value_data, c = 'r',marker = 'o')
    plt.legend("c")#图例  
    plt.show() #显示散点图 
def DrawColorScatter(read_name,write_name):#彩色散点图,读取的文件名和要写入的文件名
    fr = open(read_name,'r')#打开读取value文件
    value_list = []
    value_data = []
    count = 0
    for line in fr.readlines():
        if not len(line):
          continue
        line = line.strip()
        value_list.append(line.split(','))
        value_data.append(float(value_list[count][1]))
        count += 1
    fp = pd.read_csv(write_name)#打开写入文件,准备将value写入第三列
    count = -1
    flen = fp.iloc[:,0].size
    for item in range(flen):
        if (count == -1):#特殊处理文件第一行index
          count += 1
          continue
        fp.loc[count,['price']] = value_data[count]#修改文件中价格
        count += 1
    fp.to_csv(write_name,index = False,sep=',')#写入文件,默认不含index,以逗号分隔
    #以下开始画图
    g=sns.FacetGrid(fp, hue = "city", palette = "Set1", size = 6)
    #hue指色彩,是散点不同颜色的来源
    g.map(plt.scatter, "people", "price", s = 250, linewidth = 0.65, edgecolor = "white")
    #第2,3个参数是X,Y坐标的标签,s表示散点大小,linewidth表示散点边缘线宽,edgecolor表示散点边缘线色
    g.add_legend()
    plt.show()#显示散点图
if __name__=='__main__':
    DrawScatter("value.txt")#散点图
    DrawColorScatter("value.txt","PeopleNumber.csv")#彩色散点图


四、运行结果

1、散点图


2、彩色散点图


  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值