matplotlib【5】--散点图

可以将折线图绘制到散点图中。散点图可以反映两个变量间的相关关系,即如果存在相关关系的话,它们之间是正向的线性关系还是反向的线性关系?甚至于是非线性关系?

plt.scatter()

plt.scatter(x, y, s=20, 
            c=None, marker='o', 
            cmap=None, norm=None, 
            vmin=None, vmax=None, 
            alpha=None, linewidths=None, 
            edgecolors=None)

x:指定散点图的x轴数据;

y:指定散点图的y轴数据;

s:指定散点图点的大小,默认为20,通过传入新的变量,实现气泡图的绘制;

c:指定散点图点的颜色,默认为蓝色;

marker:指定散点图点的形状,默认为圆形;

cmap:指定色图,只有当c参数是一个浮点型的数组的时候才起作用;

norm:设置数据亮度,标准化到0~1之间,使用该参数仍需要c为浮点型的数组;

vmin、vmax:亮度设置,与norm类似,如果使用了norm则该参数无效;

alpha:设置散点的透明度;

linewidths:设置散点边界线的宽度;

edgecolors:设置散点边界线的颜色;

#导入模块
import pandas as pd
import matplotlib.pyplot as plt

#设置绘图风格
plt.style.use('ggplot')
#设置中文编码和负号的正常显示
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
plt.rcParams['axes.unicode_minus']=False
#设置警告消除
import warnings
warnings.filterwarnings('ignore')

#####1)简单散点图############
#读入数据
file=open(r'E:\知乎文件保存\python_scatter\cars.csv')
cars=pd.read_csv(file)
#绘图
plt.scatter(
    cars.speed,#x轴为汽车速度
    cars.dist,#y轴为汽车刹车距离
    s=30,#设置点的大小
    c='steelblue',#点的颜色
    marker='s',#点的形状
    alpha=0.9,#点的透明度
    linewidths=0.3,#设置散点边界的粗细
    edgecolors='red'#设置散点边界的颜色
)
#添加轴标签和标题
plt.title('汽车速度和刹车距离的关系')
plt.xlabel('速度')
plt.ylabel('距离')

#去除图边框的顶部刻度和右边刻度
plt.tick_params(top='off',right='off')

#显示图形
plt.show()

在这里插入图片描述

#####2)分组散点图绘制
#案例:花瓣数据集
#读取数据
file1=open(r'E:\知乎文件保存\python_scatter\iris.csv')
iris=pd.read_csv(file1)

#绘图
#首先分析数据集,spiece是几种,这几种的花瓣长度和宽度需要用散点画出来,不同种类是需要不同的颜色
#用因为是分组,所以可以用for循环进行处理

#自定义颜色
colors=['steelblue','#9999ff','#ff9999']
#三种不同的花色种类
Species=iris.Species.unique()
#for循环,完成分组散点图的绘制
for i in range(len(Species)):
    plt.scatter(iris.loc[iris.Species==Species[i],'Petal.Length'],
                iris.loc[iris.Species==Species[i],'Petal.Width'],
                s=35,
                c=colors[i],
                label=Species[i])

#添加标题和轴标签
plt.title('不同花瓣的宽度和长度之间的关系')
plt.xlabel('花瓣长度')
plt.ylabel('花瓣宽度')

#去除图框的上边框和右边框刻度
plt.tick_params(top='off',right='off')
plt.legend(loc='upper left')
plt.show()

在这里插入图片描述

#####3)气泡图
import numpy as np

#读取数据
sales=pd.read_excel('E:\知乎文件保存\python_scatter\sales.xlsx')

#绘制气泡图
colors=['steelblue','#9999ff','#ff9999','#DAA520','#FFFFF0','#FFA07A','#808000']
region=sales.region.unique()
texts=['西南','西北','华中','华南','华东','华北','东北']
for i in range(len(region)):
    plt.scatter(sales.finish_ratio[i],
                sales.profit_ratio[i],
                c=colors[i],
                s=sales.tot_target[ i]/30,
                edgecolors='black')
    plt.text(sales.finish_ratio[i],
             sales.profit_ratio[i]+0.0001,
             texts[i],
             size=7,
             ha='center')

#改变刻度的显示方式(百分比形式)
plt.xticks(np.arange(0,1,0.1),[str(i*100)+'%' for i in np.arange(0,1,0.1)])
plt.yticks(np.arange(0,1,0.1),[str(i*100)+'%' for i in np.arange(0,1,0.1)])
#设置轴的数值范围
plt.xlim(0.20,0.70)
plt.ylim(0.25,0.85)

#添加标题和坐标轴
plt.title('完成率和利润的关系')
plt.xlabel('完成率')
plt.ylabel('利润率')

#去除图边框的顶部刻度和右边刻度
plt.tick_params(top='off',right='off')

plt.show()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42787271/article/details/83042567
今日推荐