python熊猫绘制两个y轴的偏移x轴

拉格斯

我有一个包含3列的数据框:其中一个是“ groupby”列,另外两个是带有值的“普通”列。我也想生成一个箱线图和一个条形图。在条形图上,我想可视化每个组元素的出现次数。让我的示例代码更详细地告诉此数据框:

li_str = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten']

df = pd.DataFrame([[i]+j[k] for i,j in {li_str[i]:np.random.randn(j, 2).tolist() for i,j in \
    enumerate(np.random.randint(5, 15, len(li_str)))}.items() for k in range(len(j))]
    , columns=['A', 'B', 'C'])

因此,以上我为其中的每个元素生成了随机数的随机值,li_str并针对列B和进行了处理C

然后,我仅可视化一个箱线图:

fig, ax = plt.subplots(figsize=(16,6))
p1 = df.boxplot(ax=ax, column='B', by='A', sym='')

我的结果是: 在此处输入图片说明

现在,我将每个组具有的元素数量可视化(因此,我上面用np.random.randint(5, 15, len(li_str))代码生成的随机数):

fig, ax = plt.subplots(figsize=(16,6))

df_gb = df.groupby('A').count()

p2 = df_gb['B'].plot(ax=ax, kind='bar', figsize=(16,6), colormap='Set2', alpha=0.3)
plt.ylim([0, 20])

我的结果是: 在此处输入图片说明

现在,我希望将这两个合二为一:

fig, ax = plt.subplots(figsize=(16,6))
ax2 = ax.twinx()

df_gb = df.groupby('A').count()

p1 = df.boxplot(ax=ax, column='B', by='A', sym='')
p2 = df_gb['B'].plot(ax=ax2, kind='bar', figsize=(16,6)
    , colormap='Set2', alpha=0.3, secondary_y=True)
plt.ylim([0, 20])

我的结果是: 在此处输入图片说明

有人知道为什么我的箱线图通过一个X轴刻度线向右移动吗?我使用Python 3.5.1,Pandas 0.17.0,matplotlib 1.4.3

谢谢!!!

停止伤害莫妮卡

这是因为即使标签相同,箱形图和条形图也不会使用相同的xticks。

df.boxplot(column='B', by='A')
plt.xticks()

(array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10]), <a list of 10 Text xticklabel objects>)

df.groupby('A').count()['B'].plot(kind='bar')
plt.xticks()

(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), <a list of 10 Text xticklabel objects>)

乍一看,这看起来像是应该在matplotlib中修复的不一致之处boxplot(),但我可能只是忽略了基本原理。

作为一种解决方法,请使用matplotlib bar(),它允许您指定xticks以匹配boxplot的xticks(我没有找到一种使用的方法df.plot(kind='bar')

df.boxplot(column='B', by='A')
plt.twinx()
plt.bar(left=plt.xticks()[0], height=df.groupby('A').count()['B'],
        align='center', alpha=0.3)

在此处输入图片说明

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用一个y轴和两个x轴绘制两组数据

来自分类Dev

如何绘制两个X轴的功率?

来自分类Dev

如何绘制直方图的两个水平x轴标签?

来自分类Dev

使用Python库绘制共享相同y轴的两个水平条形图

来自分类Dev

在单个轴上绘制两个变量的同时具有单个y轴值

来自分类Dev

Matplotlib:如何绘制两个具有相同x / y轴但一个沿y轴从另一个开始的条形图

来自分类Dev

为两个限制设置 X 和 Y 轴

来自分类Dev

熊猫:具有两个条和两个y轴的条形图

来自分类Dev

jQuery Graphing Libraries:对应于单个X轴的两个Y轴点

来自分类Dev

带有两个 Y 轴和公共 X 轴的 Matplotlib 条形图

来自分类Dev

如何在同一面板的同一X轴上绘制具有两个不同y轴范围的点?

来自分类Dev

两个对应的y轴

来自分类Dev

在同一图上绘制两个直方图(使用相同的y轴)和线图(使用不同的y轴)

来自分类Dev

Matplotlib:如何从列表中绘制数据,并添加两个Y轴?

来自分类Dev

在MATLAB中绘制带有两个y轴和多个条的条形图

来自分类Dev

合并两个不同的图:一个在X轴上,另一个在Y轴上

来自分类Dev

为两个不同的数据集绘制相同的x轴

来自分类Dev

如何通过从两个不同的列中获取x轴值来进行绘制?

来自分类Dev

以第三个为x轴绘制两个数据框列

来自分类Dev

绘制两个具有不同x轴的时间序列

来自分类Dev

使用Plotly.js绘制两个条形图和两个散点图并共享相同的x轴

来自分类Dev

如何在具有一个 x 轴和两个 y 轴的图中将误差线缩放到右侧 y 轴的尺寸

来自分类Dev

在新轴上串联两个熊猫数据框

来自分类Dev

如何使用熊猫在x轴上绘制列并将索引用作y轴?

来自分类Dev

绘制:用两个不线性相关的x轴绘制一条迹线

来自分类Dev

绘制:用两个不线性相关的x轴绘制一条迹线

来自分类Dev

r-在ggplot中用一个x轴绘制两个图(3个变量)

来自分类Dev

r-在ggplot中用一个x轴绘制两个图(3个变量)

来自分类Dev

在一个图中绘制两个折线图时,在y轴上显示不同的缩放比例

Related 相关文章

  1. 1

    用一个y轴和两个x轴绘制两组数据

  2. 2

    如何绘制两个X轴的功率?

  3. 3

    如何绘制直方图的两个水平x轴标签?

  4. 4

    使用Python库绘制共享相同y轴的两个水平条形图

  5. 5

    在单个轴上绘制两个变量的同时具有单个y轴值

  6. 6

    Matplotlib:如何绘制两个具有相同x / y轴但一个沿y轴从另一个开始的条形图

  7. 7

    为两个限制设置 X 和 Y 轴

  8. 8

    熊猫:具有两个条和两个y轴的条形图

  9. 9

    jQuery Graphing Libraries:对应于单个X轴的两个Y轴点

  10. 10

    带有两个 Y 轴和公共 X 轴的 Matplotlib 条形图

  11. 11

    如何在同一面板的同一X轴上绘制具有两个不同y轴范围的点?

  12. 12

    两个对应的y轴

  13. 13

    在同一图上绘制两个直方图(使用相同的y轴)和线图(使用不同的y轴)

  14. 14

    Matplotlib:如何从列表中绘制数据,并添加两个Y轴?

  15. 15

    在MATLAB中绘制带有两个y轴和多个条的条形图

  16. 16

    合并两个不同的图:一个在X轴上,另一个在Y轴上

  17. 17

    为两个不同的数据集绘制相同的x轴

  18. 18

    如何通过从两个不同的列中获取x轴值来进行绘制?

  19. 19

    以第三个为x轴绘制两个数据框列

  20. 20

    绘制两个具有不同x轴的时间序列

  21. 21

    使用Plotly.js绘制两个条形图和两个散点图并共享相同的x轴

  22. 22

    如何在具有一个 x 轴和两个 y 轴的图中将误差线缩放到右侧 y 轴的尺寸

  23. 23

    在新轴上串联两个熊猫数据框

  24. 24

    如何使用熊猫在x轴上绘制列并将索引用作y轴?

  25. 25

    绘制:用两个不线性相关的x轴绘制一条迹线

  26. 26

    绘制:用两个不线性相关的x轴绘制一条迹线

  27. 27

    r-在ggplot中用一个x轴绘制两个图(3个变量)

  28. 28

    r-在ggplot中用一个x轴绘制两个图(3个变量)

  29. 29

    在一个图中绘制两个折线图时,在y轴上显示不同的缩放比例

热门标签

归档