[英]Plotting from Pivot Table using Pandas
Let's say that I have the following pivot table (this is the one created in the documentation ): 假设我有以下数据透视表(这是在文档中创建的数据透视表):
In [8]: tuples = list(zip(*[['bar', 'bar', 'baz', 'baz',
...: 'foo', 'foo', 'qux', 'qux'],
...: ['one', 'two', 'one', 'two',
...: 'one', 'two', 'one', 'two']]))
...:
In [9]: index = MultiIndex.from_tuples(tuples, names=['first', 'second'])
In [10]: df = DataFrame(randn(8, 2), index=index, columns=['A', 'B'])
In [11]: df2 = df[:4]
In [12]: df2
Out[12]:
A B
first second
bar one 0.721555 -0.706771
two -1.039575 0.271860
baz one -0.424972 0.567020
two 0.276232 -1.087401
How can I use this table to plot both 'bar' and 'baz' on the same plot with axes (second, A) (ie I want to create a plot with the points (one, 0.72), (two, -1.039), (one, -0.42), (two, 0.276), where the first two points are plotted in a different color than the latter two). 如何使用此表在同一图上以轴(second,A)绘制'bar'和'baz'(即我想创建一个包含点(一,0.72),(二,-1.039)的图,(一个,-0.42),(两个,0.276),其中前两个点以与后两个不同的颜色绘制。
I tried using 我尝试使用
df2[[0]].plot()
but this plots the points sequentially on the x-axis so that they are ordered ((bar,one), .721), ((bar,two), -1.039), etc, rather than having the two 'one' points and the two 'two' points share a vertical axis. 但这会在x轴上依次绘制点,以便它们有序((bar,one),.721),((bar,two),-1.039)等,而不是具有两个“ one”点和两个“两个”点共享一个垂直轴。
Ok, I figured it out. 好的,我知道了。 The key was unstacking the data first: 关键是首先要拆栈数据:
import matplotlib.pyplot as plt
t=df2.unstack(level=0)
plt.plot(t[[0]], color='red')
plt.plot(t[[1]], color='blue')
plt.xticks(range(2), ['one','two'], size='small')
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.