将 Matplotlib/Seaborn 散点图变形为平行四边形

Posted

技术标签:

【中文标题】将 Matplotlib/Seaborn 散点图变形为平行四边形【英文标题】:Warping Matplotlib/Seaborn Scatter Plot into Parallelogram 【发布时间】:2022-01-12 22:40:20 【问题描述】:

我有一个 2D 散点图(在 matplotlib 或 seaborn 中)和一个角度,例如64度。我想绘制这个散点图的扭曲版本,其中第一个图的 x 轴保持固定,但第二个轴被扭曲,使得第一个图的 y 轴现在与 x 轴成给定的角度的新地块(即 64 度)。我该怎么做?

换句话说,我想获取原始散点图并将 y 轴“推”到右侧以形成类似平行四边形的图,其中旧 y 轴和旧/新 x 轴之间的角度为给定的角度。

【问题讨论】:

【参考方案1】:

这是an old tutorial example的改编:

import matplotlib.pyplot as plt
from matplotlib.transforms import Affine2D
import mpl_toolkits.axisartist.floating_axes as floating_axes
import numpy as np

fig = plt.figure()
skewed_transform = Affine2D().skew_deg(90 - 64, 0)
grid_helper = floating_axes.GridHelperCurveLinear(skewed_transform, extremes=(-0.5, 1.5, -0.5, 1.5))
skewed_ax = floating_axes.FloatingSubplot(fig, 111, grid_helper=grid_helper)
skewed_ax.set_facecolor('0.95')  # light grey background
skewed_ax.axis["top"].set_visible(False)
skewed_ax.axis["right"].set_visible(False)
fig.add_subplot(skewed_ax)
x, y = np.random.rand(2, 100)  # random point in a square of [0,1]x[0,1]
skewed_ax.scatter(x, y, transform=skewed_transform + skewed_ax.transData)
plt.show()

【讨论】:

漂亮!谢谢!! 我如何也倾斜散点图数据?当我尝试skewed_ax.scatter(x, y) 时,这些点并没有类似的倾斜。 我在散点图上添加了一些具有相同偏差的演示数据。您可能希望将自己的测试数据和示例图添加到您的问题中,以帮助阐明您到底需要什么。 太完美了。谢谢!

以上是关于将 Matplotlib/Seaborn 散点图变形为平行四边形的主要内容,如果未能解决你的问题,请参考以下文章

python数据可视化(matplotlib,seaborn,plotly)

请问excel中如何将散点图拟合成公式呀?

R绘图基础指南 3. 散点图(合集)

如何将excel的一组数据既做成散点图又做成条状图,意思就是散点图和条状图在一个图里

怎样用Eviews画散点图

Excel中如何正确地画XY散点图