在同一轴上绘制多个条形图
Posted
技术标签:
【中文标题】在同一轴上绘制多个条形图【英文标题】:Plotting multiple barplots on the same ax 【发布时间】:2019-07-15 14:44:24 【问题描述】:我想使用相同的斧头在一行上绘制多个条形图,但似乎 pandas
绘图函数每次都会删除我之前的绘图。
例如:
import pandas as pd
import pylab as plt
fig, ax = plt.subplots()
df = pd.DataFrame('lab':['D', 'E', 'F'], 'val':[10, 30, 20])
df.plot.bar(x='lab', y='val', rot=0, ax=ax)
df = pd.DataFrame('lab':['A', 'B', 'C'], 'val':[10, 30, 20])
df.plot.bar(x='lab', y='val', rot=0, ax=ax)
ax.set_xlim(-.5, 6)
plt.show()
给我
我尝试使用 pandas 函数的xticks
参数,但没有成功。
【问题讨论】:
https://***.com/questions/42128467/matplotlib-plot-multiple-columns-of-pandas-data-frame-on-the-bar-chart 可能重复? 他们在互相密谋。注意顶部的图例。标签对应于第二个数据集。 【参考方案1】:您需要设置条在 X 轴上的位置
https://matplotlib.org/gallery/lines_bars_and_markers/barchart.html#sphx-glr-gallery-lines-bars-and-markers-barchart-py
men_means, men_std = (20, 35, 30, 35, 27), (2, 3, 4, 1, 2)
women_means, women_std = (25, 32, 34, 20, 25), (3, 5, 2, 3, 3)
ind = np.arange(len(men_means)) # the x locations for the groups
width = 0.35 # the width of the bars
fig, ax = plt.subplots()
rects1 = ax.bar(ind - width/2, men_means, width, yerr=men_std,
color='SkyBlue', label='Men')
rects2 = ax.bar(ind + width/2, women_means, width, yerr=women_std,
color='IndianRed', label='Women')
请注意“ind”部分 - 用于确定条形的位置。另请注意,条形图的颜色已拼出。
【讨论】:
【参考方案2】:好的,看来我每次都必须提供所有刻度
fig, ax = plt.subplots()
df = pd.DataFrame('lab':['A', 'B', 'C', 'D', 'E', 'F'], 'val':[10, 30, 20, 0, 0, 0])
df.plot.bar(x='lab', y='val', rot=0, ax=ax)
df = pd.DataFrame('lab':['A', 'B', 'C', 'D', 'E', 'F'], 'val':[0, 0, 0, 10, 30, 20])
df.plot.bar(x='lab', y='val', rot=0, ax=ax)
plt.show()
【讨论】:
【参考方案3】:您可能希望在绘图之前合并两个数据框。
import pandas as pd
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
df1 = pd.DataFrame('lab':['D', 'E', 'F'], 'val':[10, 30, 20])
df2 = pd.DataFrame('lab':['A', 'B', 'C'], 'val':[10, 30, 20])
df1.append(df2).plot.bar(x='lab', y='val', rot=0, ax=ax)
plt.show()
【讨论】:
以上是关于在同一轴上绘制多个条形图的主要内容,如果未能解决你的问题,请参考以下文章