我想在条形图和弧形图之间进行混合以显示平均响应时间,以及不同参数值上的STD误差和对象的成对意义(在用户评估期间收集)。
这是通过“ outCol”参数的值(没有成对的意义信息)汇总的我的主题表演的示例。
我已经看到了许多示例,其中通过绘制绘图条之间的线段来显示成对的重要性信息,这些线段是根据明显不同的集合计算得出的。但是,由于我的参数可以有很多值,因此出于可读性考虑,我希望像在此手工制作的示例中一样,将这些线段绘制为条形图标签之间的弧线。
是否可以使用matplotlib pyplot API做到这一点?如果是这样,怎么办?(我自己没有找到,但是我离成为一名绘图专家还很远)
如果不是,是否有其他API可以启用此类图纸?
谢谢
使用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] 删除。
我来说两句