gpt4 book ai didi

python - 绘制几个极坐标图的散点图

转载 作者:行者123 更新时间:2023-11-30 22:29:43 25 4
gpt4 key购买 nike

我有一个包含五个变量和一个因变量的数据集。一个例子是:

v1  v2  v3  v4  s     a
1.0 0.6 0.8 0.2 56890 98.67
0.8 0.3 1.0 0.5 94948 98.00
1.0 0.8 0.1 0.3 78483 97.13

我想直观地表示所有五个变量和因变量之间的关系。为此,我考虑结合两种类型的图:

  • sa 之间的散点图
  • v1v2v3v4 的极坐标图

所以本质上我想为数据集中的每个数据点显示一个小极坐标图。像这样的事情:

enter image description here

极坐标图示例如下:

import numpy as np
import matplotlib.pyplot as plt

theta = np.linspace(0.0, 2 * np.pi, 4, endpoint=False)
radii = [90, 90, 90, 90]
width = np.pi / 4 * np.array([1.0, 0.7, 0.6, 0.2])

ax = plt.subplot(111, projection='polar')
bars = ax.bar(theta, radii, width=width, bottom=0.0)

plt.show()

enter image description here

最佳答案

这个想法可以是在点的位置放置许多小极轴。为此,mpl_toolkits.axes_grid1.inset_locator.inset_axes可能用过了。这将放置在主轴数据坐标中指定的坐标 xy (bbox_to_anchor=(x,y)) 处 (bbox_transform=axis_main.transData)。 loc 参数应设置为“center”(loc=10),以便极坐标图的中间位于位置 (x,y).

然后您可以将您喜欢的任何内容绘制到极轴中。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
from matplotlib.projections import get_projection_class

d = np.array([[ 1.0, 0.6, 0.8, 0.2, 56890, 98.67],
[ 0.8, 0.3, 1.0, 0.5, 94948, 98.00],
[ 1.0, 0.8, 0.1, 0.3, 78483, 97.13]])

fig, ax = plt.subplots()
ax.margins(0.15)


def plot_inset(data, x,y, axis_main, width ):
ax_sub= inset_axes(axis_main, width=width, height=width, loc=10,
bbox_to_anchor=(x,y),
bbox_transform=axis_main.transData,
borderpad=0.0, axes_class=get_projection_class("polar"))

theta = np.linspace(0.0, 2 * np.pi, 4, endpoint=False)
radii = [90, 90, 90, 90]
width = np.pi / 4 * data
bars = ax_sub.bar(theta, radii, width=width, bottom=0.0)
ax_sub.set_thetagrids(theta*180/np.pi, frac=1.4)
ax_sub.set_xticklabels(["v{}".format(i) for i in range(1,5)])
ax_sub.set_yticks([])


for da in d:
plot_inset(da[:4], da[4],da[5], ax, 0.5 )

#plot invisible scatter plot for the axes to autoscale
ax.scatter(d[:,4], d[:,5], s=1, alpha=0.0)

plt.show()

enter image description here

关于python - 绘制几个极坐标图的散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46262749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com