Python pyplot-在条形图标签之间绘制弧形图

洛安·吉奥(Loann Gio)

我想在条形图和弧形图之间进行混合以显示平均响应时间,以及不同参数值上的STD误差对象的成对意义(在用户评估期间收集)。

是通过“ outCol”参数的值(没有成对的意义信息)汇总的我的主题表演的示例。

我已经看到了许多示例,其中通过绘制绘图条之间的线段来显示成对的重要性信息,这些线段是根据明显不同的集合计算得出的。但是,由于我的参数可以有很多值,因此出于可读性考虑,我希望像在此手工制作的示例中一样,将这些线段绘制为条形图标签之间的弧线

是否可以使用matplotlib pyplot API做到这一点?如果是这样,怎么办?(我自己没有找到,但是我离成为一名绘图专家还很远)

如果不是,是否有其他API可以启用此类图纸?

谢谢

约翰·C

使用clip_on=False,可以在“轴”区域之外绘制圆弧。要定位圆弧,需要进行混合变换,其中x坐标为“数据”格式(0、1、2,...),y坐标为“轴”格式(y=1在顶部样条线和y=0底部脊线) )。圆弧的“高度”可以使其宽度稍成比例,例如通过设置height = 0.1*np.sqrt(width)

这是一些示例代码。plt.tight_layout()使圆弧适合图中:

from matplotlib import pyplot as plt
from matplotlib.patches import Arc
from matplotlib import transforms
import pandas as pd
import numpy as np
import seaborn as sns

labels = list('abcdef')
df = pd.DataFrame({lab: np.random.uniform(0, 100, 5) for lab in labels})

ax = sns.barplot(data=df)

arcs = [('a', 'c'), ('b', 'e'), ('b', 'd'), ('a', 'f')]

trans = transforms.blended_transform_factory(ax.transData, ax.transAxes)
for arc_i, arc_j in arcs:
    i = labels.index(arc_i)
    j = labels.index(arc_j)
    patch = Arc(((i + j)/2, -0.1), j - i, 0.1*np.sqrt(abs(j - i)), theta1=180.0, theta2=360.0, transform=trans,
                clip_on=False, edgecolor='black', linewidth='1')
    ax.add_patch(patch)
plt.tight_layout()
plt.show()

结果图

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章