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打开形式为:

Python可视化-散点图与彩色散点图_第1张图片

二、导入模块包

可参考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、散点图

Python可视化-散点图与彩色散点图_第2张图片

2、彩色散点图

Python可视化-散点图与彩色散点图_第3张图片

你可能感兴趣的:(Python,python数据可视化实例入门)