【问题标题】:How to smooth data points in scatter plots in python?如何平滑python散点图中的数据点?
【发布时间】:2019-03-22 15:26:21
【问题描述】:

我有一个散点图,我根据数组为每个数据点着色:

 plt.scatter(xs,ys,c=av,cmap=plt.cm.hot,s=50,alpha=0.5)

In [96]: xs.shape
Out[96]: (5594,)

In [97]: ys.shape
Out[97]: (5594,)

In [98]: av.shape
Out[98]: (5594,)

结果如下:

现在,我想保留颜色,但要平滑数据点以获得平滑的散点图,类似于这样(来自 post)或这张图片:

评论: 我想如果我可以在xs, ys, zs 中添加更多点,我可以使用更多数据点制作散点图,因此,它看起来更像一个热图,这正是我想要的。 现在,对于xs, ys, zs 中的每个点,我想在原始点周围添加具有相似值的附加点。理想情况下,这些附加点应围绕xs, ys, zs 中的实际原始点形成正态分布。是否有统计工具来完成这项任务?例如。怎么把[1, 5, 10]改成[0.9,0.98,1,1.02,1.1, 4.9,4.98,5,5.02,5.1, 9.9,9.98,10,10.02,10.1]

【问题讨论】:

  • 这不是alpha 所做的吗?您还可以添加edgecolors='none' 以去除边缘并使其更平滑
  • 您链接到的帖子直接显示了一些方法。究竟是什么问题?
  • 我想使用高斯核密度来平滑数据点。我链接的帖子正在这样做,但我也想控制颜色图。我有一个用于每个数据点颜色的数组。
  • @A.Razavi 检查更新的答案

标签: python matplotlib


【解决方案1】:

OP:有统计工具来完成这项任务吗?例如。如何将 [1, 5, 10] 更改为 [0.9,0.98,1,1.02,1.1, 4.9,4.98,5,5.02,5.1, 9.9,9.98,10,10.02,10.1]?

obs=[1, 5 ,10]

syntheticobs=np.random.normal(0,0.1,(6,3))+obs
synthethicobs

Out[]:array([[ 1.02166209,  5.00716569,  9.96726293],
             [ 0.96727493,  4.94823697, 10.03424305],
             [ 1.10756036,  5.12464335,  9.86776082],
             [ 0.97866246,  5.12743117, 10.06647638],
             [ 0.87842188,  5.00994338, 10.1114983 ],
             [ 1.10728294,  4.82523615, 10.03642462]])

【讨论】:

  • 请扩展您的答案以包含有关如何解决问题的详细说明
  • 去除边缘会给图片带来更平滑的感觉,但恕我直言,问题不是很清楚。我的猜测是这个或 OP 想要减少颜色图的“传播”。我不知道为什么有人会想要你
猜你喜欢
  • 1970-01-01
  • 2016-10-23
  • 1970-01-01
  • 2013-07-07
  • 2015-06-15
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
  • 2014-08-17
相关资源
最近更新 更多