matplotlib中的散点图和组合极坐标直方图

本文森特

我正在尝试生成像这样的图,该图结合了笛卡尔散布图和极坐标直方图。(径向线可选)存在在此处输入图片说明类似的解决方案(由Nicolas Legrand提出),用于查看x和y的差异此处的代码),但是我们需要查看比率(即x / y)。在此处输入图片说明

更具体地说,当我们要查看相对风险度量(两个概率之比)时,这很有用。

散点图显然不是问题,但是极坐标直方图更高级。

最有前途的领导,我发现从matplotlib画廊这个中心的例子在这里 在此处输入图片说明

我尝试这样做,但是遇到了我的matplotlib技能的限制。朝着这个目标迈进的任何努力都是伟大的。

本文森特

好。感谢Nicolas回答,以及tomjn回答,我有一个可行的解决方案:)

import numpy as np
import matplotlib.pyplot as plt

# Scatter data
n = 50
x = 0.3 + np.random.randn(n)*0.1
y = 0.4 + np.random.randn(n)*0.02

def radial_corner_plot(x, y, n_hist_bins=51):
    """Scatter plot with radial histogram of x/y ratios"""

    # Axis setup
    fig = plt.figure(figsize=(6,6))
    ax1 = fig.add_axes([0.1,0.1,.6,.6], label="cartesian")
    ax2 = fig.add_axes([0.1,0.1,.8,.8], projection="polar", label="polar")
    ax2.set_rorigin(-20)
    ax2.set_thetamax(90)

    # define useful constant
    offset_in_radians = np.pi/4

    def rotate_hist_axis(ax):
        """rotate so that 0 degrees is pointing up and right"""
        ax.set_theta_offset(offset_in_radians)
        ax.set_thetamin(-45)
        ax.set_thetamax(45)
        return ax

    # Convert scatter data to histogram data
    r = np.sqrt(x**2 + y**2)
    phi = np.arctan2(y, x)
    h, b = np.histogram(phi, 
                        bins=np.linspace(0, np.pi/2, n_hist_bins),
                        density=True)

    # SCATTER PLOT -------------------------------------------------------
    ax1.scatter(x,y)

    ax1.set(xlim=[0, 1], ylim=[0, 1], xlabel="x", ylabel="y")
    ax1.spines['right'].set_visible(False)
    ax1.spines['top'].set_visible(False)


    # HISTOGRAM ----------------------------------------------------------
    ax2 = rotate_hist_axis(ax2)
    # rotation of axis requires rotation in bin positions
    b = b - offset_in_radians

    # plot the histogram
    bars = ax2.bar(b[:-1], h, width=b[1:] - b[:-1], align='edge')

    def update_hist_ticks(ax, desired_ratios):
        """Update tick positions and corresponding tick labels"""
        x = np.ones(len(desired_ratios))
        y = 1/desired_ratios
        phi = np.arctan2(y,x) - offset_in_radians
        # define ticklabels
        xticklabels = [str(round(float(label), 2)) for label in desired_ratios]
        # apply updates
        ax2.set(xticks=phi, xticklabels=xticklabels)
        return ax

    ax2 = update_hist_ticks(ax2, np.array([1/8, 1/4, 1/2, 1, 2, 4, 8]))

    # just have radial grid lines
    ax2.grid(which="major", axis="y")

    # remove bin count labels
    ax2.set_yticks([])

    return (fig, [ax1, ax2])

fig, ax = radial_corner_plot(x, y)

感谢您的指点!

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在matplotlib中的极坐标投影上设置径向偏移

来自分类Dev

Python和Matplotlib中的垂直直方图

来自分类Dev

Python中的圆形/极坐标直方图

来自分类Dev

极坐标图在matplotlib中给出了错误的角度

来自分类Dev

在matplotlib中的极坐标图上移动径向刻度标签

来自分类Dev

如何使用Matplotlib用极坐标中的轮廓密度线绘制散点图?

来自分类Dev

Python中的极坐标热图

来自分类Dev

Matplotlib极坐标线

来自分类Dev

使用matplotlib绘制直方图或散点图

来自分类Dev

matplotlib:在散点图上方绘制直方图

来自分类Dev

Gnuplot在极坐标中绘制离散弧

来自分类Dev

创建极坐标直方图

来自分类Dev

将极坐标直方图与极坐标散点图结合

来自分类Dev

极坐标中的Inset_axes

来自分类Dev

使用极坐标在Python中绘制相像

来自分类Dev

gnuplot中的极坐标图

来自分类Dev

在散点图中绘制小极坐标图-Python

来自分类Dev

Gnuplot极坐标图直方图

来自分类Dev

自动将组合的散点图和直方图写入文件夹

来自分类Dev

matplotlib极坐标刻度/轴标签位置

来自分类Dev

matplotlib结合极坐标和笛卡尔网格数据

来自分类Dev

Matplotlib:极坐标图坐标轴刻度标签位置

来自分类Dev

matplotlib极坐标图设置标签位置

来自分类Dev

r中同一图上的散点图和直方图

来自分类Dev

创建极坐标直方图

来自分类Dev

Matplotlib-投影极坐标中的等高线和颤动图

来自分类Dev

如何在matplotlib中设置极坐标图的大小?

来自分类Dev

Chart js - 极坐标散点图

来自分类Dev

matplotlib:在具有度数参数的极坐标系内绘制散点图

Related 相关文章

热门标签

归档