同一图上的条形图/线图,但条形图前面的轴和线图不同
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 条形图在辅助轴上,折线图在主轴上 线图在条形图前面【问题讨论】:
我假设Dataframe
的plot()
函数也有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()
创建两个轴ax1
和ax2
。
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()
【讨论】:
以上是关于同一图上的条形图/线图,但条形图前面的轴和线图不同的主要内容,如果未能解决你的问题,请参考以下文章
如何在具有不同 Y 轴的同一个 seaborn 图中很好地制作条形图和线图?