将 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)