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