如何在图表中设置散点标记:你所不知道的图表可视化技巧
如何在图表中设置散点标记:你所不知道的图表可视化技巧散点图 (可能有变化),六边形或2D密度图。## 初始字体设置,设置好可避免很多麻烦 plt.rcParams['font.sans-serif']=['Source Han Sans CN'] # 显示中文不乱码,思源黑体 plt.rcParams['font.size'] = 22 # 设置图表全局字体大小,后期某个元素的字体大小可以自行调整 plt.rcParams['axes.unicode_minus'] = False # 显示负数不乱码 ## 初始化图表大小 plt.rcParams['figure.figsize'] = (20.0 8.0) # 设置figur
当你看到数据想画图表时,你是否能总是第一时间想到折线图、条形图、柱形图、饼图?
至少老海是这样的感觉,不知道为什么总是会不由自主的冷落了最原始最具威力的散点图~
OK,今天老海就专门总结一下散点图的方方面面,也是提醒自己不要忽视可视化中的图表之神
什么是散点图?散点图,将数据以点的形式展现在XY轴直角坐标系上,精准表达点与点之间的位置关系,从而体现出不同变量之间的相互影响程度。老海认为它是表达数值最精准的图表,没有之一。
散点图体现出的相关关系,有很多情况,具体含义如下图所示:
散点图基本数据样式我们想制作散点图,就必须存在2个变量,且必须为数值型。第3个变量可以为非数值型变量,作为分组依据
使用建议以下是老海给出的散点图使用小建议,避免可视化出现误区。
- 散点图非常适合矩阵式分析方法,比如战略分析中波士顿矩阵(横轴绝对值业绩额,纵轴相对值增长率)、业务四象限分析来确定不同客群或者产品分组等等。
- 使用散点图时,若样本量非常多体量巨大,则不建议把全部数据都展示在一个图表中,优先选择重点数据来展示
- 散点图中,我们可以通过形状、颜色、气泡等方式在普通图形的基础上增加数据展示维度
- 散点图表中可加入直线或曲线(尽可能靠近所有数据点)来辅助分析,并显示当大部分数据点拟合出一定变化趋势时的最佳拟合线或趋势线。
## 初始字体设置,设置好可避免很多麻烦
plt.rcParams['font.sans-serif']=['Source Han Sans CN'] # 显示中文不乱码,思源黑体
plt.rcParams['font.size'] = 22 # 设置图表全局字体大小,后期某个元素的字体大小可以自行调整
plt.rcParams['axes.unicode_minus'] = False # 显示负数不乱码
## 初始化图表大小
plt.rcParams['figure.figsize'] = (20.0 8.0) # 设置figure_size尺寸
## 初始化图表分辨率质量
plt.rcParams['savefig.dpi'] = 300 # 设置图表保存时的像素分辨率
plt.rcParams['figure.dpi'] = 300 # 设置图表绘制时的像素分辨率
## 图表的颜色自定义
colors = ['#dc2624' '#2b4750' '#45a0a2' '#e87a59'
'#7dcaa9' '#649E7D' '#dc8018' '#C89F91'
'#6c6d6c' '#4f6268' '#c7cccf']
plt.rcParams['axes.prop_cycle'] = plt.cycler( color=colors)
path = 'D:\\系列文章\\'
# 自定义文件路径,可以自行设定
os.chdir(path)
# 设置为该路径为工作路径,一般存放数据源文件
设定图表样式和文件路径
Financial_data = pd.read_excel('虚拟演示案例数据.xlsx' sheet_name='二维表')
Financial_data
读入数据
Financial_data = pd.read_excel('虚拟演示案例数据.xlsx' sheet_name='二维表')
Financial_data
散点图的基本数据结构
plt.scatter('材料' '租金' data=Financial_data)
sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到
plt.show()
seaborn—散点图画法
import seaborn as sns
sns.regplot('材料' '租金' data=Financial_data fit_reg=False)
sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到
plt.show()
seaborn—散点趋势图
import seaborn as sns
sns.regplot('材料' '租金' data=Financial_data)
sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到
plt.show()
seaborn—散点趋势图的美化
import seaborn as sns
sns.regplot('材料' '租金' data=Financial_data
marker='*' # 标记的形状
scatter_kws={"color":colors[0] "alpha":0.5 "s":200} # 标记的颜色、透明度、大小
line_kws={"color":colors[1] "alpha":0.7 "lw":1}) # 散点德 颜色、透明度、粗细
sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到
plt.show()
seaborn—带数据分组的散点图
# 为了方便演示,设置分类标签的数据列,分类一共为3种
group_data = np.random.randint(0 3 size = len(Financial_data))
Financial_data['分类'] = group_data
## 初始字体设置,设置好可避免很多麻烦
plt.rcParams['font.sans-serif']=['Source Han Sans CN'] # 显示中文不乱码,思源黑体
plt.rcParams['font.size'] = 5 # 设置图表全局字体大小,后期某个元素的字体大小可以自行调整
plt.rcParams['axes.unicode_minus'] = False # 显示负数不乱码
## 初始化图表大小
plt.rcParams['figure.figsize'] = (20.0 8.0) # 设置figure_size尺寸
import seaborn as sns
sns.lmplot('材料' '租金' # 设置X\Y轴的坐标
data=Financial_data # 设置数据源
fit_reg=False
hue='分类' # 设置分组的字段列
legend=False # 关闭图例功能
markers=["o" "x" "1"] # 设置不同组别的标记
palette=colors[6:9]) # 设置不同组别的颜色
sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到
plt.show()
import seaborn as sns
plt_one = sns.regplot('材料' '租金' data=Financial_data
marker='*' # 标记的形状
scatter_kws={"color":colors[0] "alpha":0.5 "s":200} # 标记的颜色、透明度、大小
line_kws={"color":colors[1] "alpha":0.7 "lw":1}) # 散点德 颜色、透明度、粗细
for row_num in range(0 len(Financial_data)): # 每个标签都加上数据点位置上
plt_one.text(Financial_data['材料'][row_num] 50 # 标签的X轴坐标,加上随机数方便观察
Financial_data['租金'][row_num] np.random.randint(5 50) # 标签的Y轴坐标,加上随机数方便观察
Financial_data['门店城市'][row_num] # 标签的具体内容
horizontalalignment='left' # 标签的对齐位置
size=10 # 标签的字体大小
color='black' # 标签的颜色
weight='semibold')
sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到
plt.show()
seaborn—带直方图的散点图
这类图形的中心部分有三个主要选项:
散点图 (可能有变化),六边形或2D密度图。
同时你可以控制散点的大小、颜色等元素,
同时还可以主图和边际图之间的空间,以及这两个部分之间的大小比例
## 初始字体设置,设置好可避免很多麻烦
plt.rcParams['font.sans-serif']=['Source Han Sans CN'] # 显示中文不乱码,思源黑体
plt.rcParams['font.size'] = 10 # 设置图表全局字体大小,后期某个元素的字体大小可以自行调整
plt.rcParams['axes.unicode_minus'] = False # 显示负数不乱码
## 初始化图表大小
plt.rcParams['figure.figsize'] = (20.0 8.0) # 设置figure_size尺寸
import seaborn as sns
# 此处可以画出多种类型的散点图。通过设置参数kind:“scatter” | “reg” | “resid” | “kde” | “hex”
# 特别提示:jointplot的图像大小,不通过figszie来控制,而是通过参数height来控制,且必须为正方形
sns.jointplot('材料' '租金' data=Financial_data
kind='scatter' # 边际直方图散点图
height=5
s=50 # 散点的大小
color=colors[0] # 散点的颜色
edgecolor=colors[1] # 散点的边缘颜色
linewidth=0.5) # 散点的边缘粗细
sns.jointplot('材料' '租金' data=Financial_data kind='reg') # 回归核密度散点图
sns.jointplot('材料' '租金' data=Financial_data kind='resid') # 回归残差密度散点图
sns.jointplot('材料' '租金' data=Financial_data kind='kde' # 2D密度估计散点图
color=colors[2] # 图像的颜色
space=0 # 散点图与附加图的距离,默认为0无距离
ratio=2) # 散点图与附加图的比例关系
sns.jointplot('材料' '租金' data=Financial_data # 六边形蜂巢散点图
kind='hex'
marginal_kws=dict(bins=100 rug=True)) # 直方图的分割情况
sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到
plt.show()
显示相关性的散点图,可以确定是否要显示回归线。
在'kind'参数中,指定'reg'进行回归,否则进行分散
import seaborn as sns
sns.pairplot(data=Financial_data kind='reg') # 回归散点图看相关性
sns.pairplot(data=Financial_data kind='scatter') # 散点图看相关性
sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到
plt.show()
您可以自定义所有散点图,就好像它们是单个散点图一样。
seaborn可以轻松地将颜色映射到点,例如,可以研究不同组的行为。
# 为了方便演示,设置分类标签的数据列,分类一共为3种
group_data = np.random.randint(0 3 size = len(Financial_data))
Financial_data['分类'] = group_data
import seaborn as sns
sns.pairplot(data=Financial_data kind='scatter' hue='分类' markers=["o" "s" "D"]) # 设置分组和组别元素形状
sns.despine() # 默认无参数状态,就是删除上方和右方的边框,matplotlib貌似做不到
plt.show()
以上就是关于散点图的总结,主要还是偏实操。
关于散点图的具体研究文章,在老海自己的博客中,这里不再赘述。
OK,今天先到这里了,如果觉得喜欢,请动动小手转发和关注一下我们。
我是老海,来自数据炼金术师