如何在Python中绘制数据框?

3

我正在尝试绘制一个DataFrame,但是我没有得到我需要的结果。这是我正在尝试做的事情以及我目前得到的结果。(我是Python的新手)

import pandas as pd
import matplotlib.pyplot as plt

my_data = {1965:{'a':52, 'b':54, 'c':67, 'd':45}, 
      1966:{'a':34, 'b':34, 'c':35, 'd':76}, 
      1967:{'a':56, 'b':56, 'c':54, 'd':34}}  

df = pd.DataFrame(my_data)
df.plot( style=[])
plt.show()

我得到了以下图表,但我需要的是:年份在X轴上,每条线都必须是当前在X轴上的内容(a、b、c、d)。感谢您的帮助!!。

enter image description here


你能具体说明一下哪里出了问题吗?我们并不完全清楚你想要的x轴是什么样子。 - kirkpatt
嗨kikpatty... 我需要一个图表,显示年份(1965、1966、1967)在X轴上,每条线将是a、b、c和d。例如,蓝色线为'a',绿色为'b',红色为'c'。这有意义吗? - PAstudilloE
是的。你可能想编辑你的问题,以便为其他人澄清这一点。 - kirkpatt
2个回答

2
import pandas as pd
import matplotlib.pyplot as plt

my_data = {1965:{'a':52, 'b':54, 'c':67, 'd':45}, 
      1966:{'a':34, 'b':34, 'c':35, 'd':76}, 
      1967:{'a':56, 'b':56, 'c':54, 'd':34}}  

df = pd.DataFrame(my_data)
df.T.plot( kind='bar') # or df.T.plot.bar()
plt.show()

在此输入图片描述


更新:

如果这是您想要的内容:

df = pd.DataFrame(my_data)
df.columns=[str(x) for x in df.columns] # convert year numerical values to str
df.T.plot()
plt.show()

enter image description here


谢谢!我需要的是相同的图表,但是作为“折线图”,但是当我这样做时,我看不到Y轴上的年份。 - PAstudilloE
kind='bar' 更改为 kind='line' 可以解决这个问题吗? - kirkpatt
@PabloA.AstudilloEstévez,你说的“你不能在Y轴上看到年份”是什么意思?我正在按照你问题中提到的将它作为x轴绘制。 - MaThMaX
@kirkpatt,当我这样做时,X轴上会显示“0、0.5、1、1.5、2 +1.965e3”。 - PAstudilloE
抱歉 @MaThMaX,我是指 X 轴。 - PAstudilloE
@PabloA.AstudilloEstévez 好的,很抱歉我无法再帮助你了,因为我现在无法安装pandas。我说的任何其他话都只是瞎猜,但如果你还没有尝试过,你可以尝试交换my_data中的年份和字母。 - kirkpatt

1
你可以这样做:
ax = df.T.plot(linewidth=2.5)

plt.locator_params(nbins=len(df.columns))

ax.xaxis.set_major_formatter(mtick.FormatStrFormatter('%4d'))

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接