已解决
如何使用Python的matplotlib和seaborn库绘制颜色渐变的高级散点图
来自网友在路上 157857提问 提问时间:2023-11-05 04:05:11阅读次数: 57
最佳答案 问答题库578位专家为你答疑解惑
前言
我的科研论文中需要绘制一个精美的散点图,表达的是各个散点距离中心点的距离远近情况,特点如下:
- 绘图的美观程度高
- 根据距离目标点的距离的不同,各个散点能有颜色或者是透明度上的区分
- 相应的统计量是与中心点(目标点)的偏离均值和方差
基本思路
要创建一个更加美观的散点图并且根据距离中心点的远近改变颜色或透明度,可以使用matplotlib库的高级功能,并且结合seaborn库来增强图形的美观程度。
代码
下面提供实例,代码作为模板
from cProfile import label
from tkinter.ttk import Style
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from scipy.spatial.distance import cdistnp.random.seed(0)# 假设我们已经有了一些数据
# 这里生成随机数据来代表散点的坐标
x = np.random.rand(100)
y = np.random.rand(100)# 假设中心点在(0.5, 0.5)
center = np.array([0.5, 0.5])# 计算每个点到中心点的距离
points = np.vstack((x, y)).T
distances = cdist(points, np.array([center]))# 设置颜色或透明度与距离相关
# 这里我们使用距离来设置颜色
colors = distances.flatten()# 开始绘图
sns.set(style="whitegrid") # 使用seaborn的白色网格风格
plt.figure(figsize=(10, 8)) # 设置图的大小# 绘制散点图,颜色根据距离深浅,大小统一为50
plt.scatter(x, y, c=colors, cmap='viridis', alpha=0.6, s=50)# 绘制中心点
plt.scatter(center[0], center[1], c='red', s=100, label='Target')# 添加图例
plt.legend()# 添加色条
plt.colorbar(label='Distance from target')# 设置标题和轴标签
plt.title('Scatter Plot by Distance from Target')
plt.xlabel('X coordinate ')
plt.ylabel('Y coordinate ')# 显示图形
plt.show()# 数据分析
# 计算统计量,比如均值、标准差等
mean_distance = np.mean(distances)
std_distance = np.std(distances)# 打印统计结果
print(f'Mean distance from center: {mean_distance}')
print(f'Standard deviation of distances: {std_distance}')# 可视化距离的分布情况
plt.figure(figsize=(8, 6))
sns.distplot(distances, bins=20, kde=True)
plt.title('Distance Distribution')
plt.xlabel('Distance')
plt.ylabel('Frequency')
plt.show()
代码解释
- 首先使用numpy生成了随机的散点数据。
- 使用scipy库中的cdist函数计算所有点到中心点的欧氏距离。
- 用scatter函数绘制散点图,其中颜色的深浅表示了点距离中心的远近。这里使用viridis色图,它在可视化距离信息时效果不错。
- 最后,计算所有距离的均值和标准差,并且使用seaborn的distplot函数绘制距离的分布图,从而对数据进行了基本的统计分析。
注意:这段代码使用了seaborn.distplot,这个函数在seaborn的最新版本中已经被seaborn.histplot所替代,如果你的seaborn版本较新,应当相应地修改。
结果
延伸阅读
如何使用Python和matplotlib绘制机器人运动偏差路径图——实用教程与代码解析
查看全文
99%的人还看了
相似问题
- PHP/Laravel通过经纬度计算距离获取附近商家
- 1334. 阈值距离内邻居最少的城市/Floyd 【leetcode】
- 求2个字符串的最短编辑距离 java 实现
- SUB-1G芯片--PAN3028 一款低功耗远距离无线收发芯片
- [100天算法】-面试题 17.11.单词距离(day 68)
- 有关熵、相对熵(KL散度)、交叉熵、JS散度、Wasserstein距离的内容
- LeetCode|动态规划|72. 编辑距离、647. 回文子串、516. 最长回文子序列
- 竞赛 深度学习疫情社交安全距离检测算法 - python opencv cnn
- LeetCode----72. 编辑距离
- [100天算法】-距离相等的条形码(day 59)
猜你感兴趣
版权申明
本文"如何使用Python的matplotlib和seaborn库绘制颜色渐变的高级散点图":http://eshow365.cn/6-32389-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: R语言_RColorBrewer包--全平台可用
- 下一篇: kotlin中集合操作符