我有这样的事情绘制条形图
id_1 1000
id_2 200
id_3 100
id_4 50
现在,因为这是在数据帧我可以做df.plot(KIND =“酒吧”) 然而,这并不是我真正想要的我想为每两个连续的ID分开单独的条形图。 旋转数据框然后从那里绘图会更好吗? 还是有一个整洁的循环,我可以使用。我在使用matplotlib时很不好。
我有这样的事情绘制条形图
id_1 1000
id_2 200
id_3 100
id_4 50
现在,因为这是在数据帧我可以做df.plot(KIND =“酒吧”) 然而,这并不是我真正想要的我想为每两个连续的ID分开单独的条形图。 旋转数据框然后从那里绘图会更好吗? 还是有一个整洁的循环,我可以使用。我在使用matplotlib时很不好。
进口所需要的:
>>> import pandas as pd
>>> import matplotlib.pyplot as plt
创建数据绘制:
>>> data = [10, 12, 8, 44, 34, 18]
>>> idx = ["a", "b", "c", "d", "e", "f"]
>>> ser = pd.Series(data, index=idx)
>>> ser
a 10
b 12
c 8
d 44
e 34
f 18
dtype: int64
最后创建子系列,并绘制出来
>>> # how many bar charts we expect
>>> numofcharts = len(ser)/2
>>> # prepare axes for subplots (1 row, numofcharts columns one per bar chart)
>>> fig, axs = plt.subplots(1, numofcharts)
>>> for graphi in range(numofcharts):
>>> starti = 2*graphi
>>> # create subseries one for each subchart
>>> subser = ser[starti:starti+2]
>>> # print subseries, to see, what we are going to plot
>>> print subser
>>> # plot subseries as bar subchart
>>> subser.plot(ax=axs[graphi], kind="bar")
a 10
b 12
dtype: int64
c 8
d 44
dtype: int64
e 34
f 18
dtype: int64
,使剧情出现:
>>> plt.show()
这听起来像你想要条形图的数据切片。从你的问题,目前尚不清楚你想要什么片,但这里有一些例子:
import pandas as pd
# Generate some fake data
df = pd.DataFrame({'x':['id_{}'.format(i) for i in range(10)],
'y':np.random.uniform(size=10)})
情节每隔ID从1开始(所以1,3,5 ...)
df[1::2].plot(kind='bar')
情节只是连续两个ID的
df[0:2].plot(kind='bar')
上的最后一个变种:剧情连续两个ID的所有数据
for i in range(0, len(df), 2):
df[i:i+2].plot(kind='bar')
我知道这是不是一个完整的答案,但我试图找出你想要的东西的行。我想我会张贴它看看它是否有帮助,但如果我的主题很好,请留言,我会删除。
请您详细说明一下吗?也许提供一个你想到的东西的草图? [条形图演示](http://matplotlib.org/examples/api/barchart_demo.html)已分组条形。 – Schorsch 2015-03-03 14:21:04
请澄清,输入数据究竟是什么(不确定,如果'id_1'意味着一个字符串或一些符号值)以及您想要绘制哪些条形图(例如,显示每个图表的nameo以指定的x值和y值)值)。 – 2015-03-03 14:45:01
1月你的答案正是我想要的 – 2015-03-04 14:47:27