同一图上的条形图/线图,但条形图前面的轴和线图不同

Posted

技术标签:

【中文标题】同一图上的条形图/线图,但条形图前面的轴和线图不同【英文标题】:Barplot/line plot on same plot, but different axis and line plot in front of barplot 【发布时间】:2016-11-03 01:21:03 【问题描述】:

我正在使用 pandas 来绘制一些数据。

如果我绘制这个:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame('a': [100, 200, 150, 175],
                   'b': [430, 30, 20, 10])
fig, ax1 = plt.subplots(figsize=(15, 10))
df['b'].plot(kind='bar', color='y')
df['a'].plot(kind='line', marker='d')

一切都很好。

如果我在辅助轴上绘制条形轴,条形图将位于折线图的前面,从而阻碍了对线的查看,就像这样。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame('a': [100, 200, 150, 175],
                   'b': [430, 30, 20, 10])
fig, ax1 = plt.subplots(figsize=(15, 10))
df['b'].plot(kind='bar', color='y', secondary_y=True)
df['a'].plot(kind='line', marker='d')

如何制作条形图/线图...

使用 pandas/matplotlib 条形图在辅助轴上,折线图在主轴上 线图在条形图前面

【问题讨论】:

我假设Dataframeplot() 函数也有zorder 关键字;您可以尝试在第二个示例中将其设置为较高的值。 嗯...没想到。但它似乎仍然不起作用。我可以说它在两者都绘制在左侧 y 轴上时有效,但绘制在右侧 y 轴上的始终位于顶部。我真的更希望在右侧 y 轴上有条形图,这样我的老板就会看到他经常看到的东西。 【参考方案1】:

你可以把线放在主轴上。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame('a': [100, 200, 150, 175],
                   'b': [430, 30, 20, 10])
fig, ax1 = plt.subplots(figsize=(15, 10))
df['b'].plot(kind='bar', color='y')
df['a'].plot(kind='line', marker='d', secondary_y=True)

或者,使用twinx() 创建两个轴ax1ax2

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame('a': [100, 200, 150, 175],
                   'b': [430, 30, 20, 10])
fig, ax1 = plt.subplots(figsize=(15, 10))
ax2 = ax1.twinx()
df['b'].plot(kind='bar', color='y', ax=ax1)
df['a'].plot(kind='line', marker='d', ax=ax2)
ax1.yaxis.tick_right()
ax2.yaxis.tick_left()

【讨论】:

以上是关于同一图上的条形图/线图,但条形图前面的轴和线图不同的主要内容,如果未能解决你的问题,请参考以下文章

在R中的单个图上绘制两个变量的条形图和第三个变量的线图

带折线图的条形图 - 使用非数字索引

java生成饼状图,条形图,折线图的技术可以动态的显示

如何在具有不同 Y 轴的同一个 seaborn 图中很好地制作条形图和线图?

s-s-rS 2008 使用来自同一数据集的不同总和在条形图顶部绘制折线图

相同颜色和线条的条形图和线图在条形图后面