我有一些数据是这种格式的:| 位置|二〇一二年|2013年|二○一四年|| - -----|- -----|- -----|- -----|| 1|一个|B|一个|| 2| C类|一个|C类|| 3| B| D级|E级|有没有办法把这些数据画出来?它的设置方式是,表格有点像一个折线图,我知道这很奇怪,但这就是数据出来的方式。如果不是Excel,那么可能是Python。我不知道如何绘制这些数据。它已经是一种格式,好像它是一个图形,虽然,细胞就像一个点的数据线图。
envsm3lx1#
您可以使用pandas和matplotlib来旋转 Dataframe 并绘制图形:
pandas
matplotlib
import pandas as pd import matplotlib.pyplot as plt import matplotlib.ticker as ticker # Read your data # df = pd.read_excel('data.xlsx') data = {'Position': [1, 2, 3], '2012': ['A', 'C', 'B'], '2013': ['B', 'A', 'D'], '2014': ['A', 'C', 'E']} df = pd.DataFrame(data) # Reshape your table piv = (df.melt('Position', var_name='Year', value_name='ID') .pivot(index='Year', columns='ID', values='Position')) # Plot data ax = piv.plot(xlabel='Year', ylabel='Position', title='Rank by year') ax.yaxis.set_major_locator(ticker.MultipleLocator()) ax.invert_yaxis() plt.show()
输出:
旋转的 Dataframe :
>>> piv ID A B C D E Year 2012 1.0 3.0 2.0 NaN NaN 2013 2.0 1.0 NaN 3.0 NaN 2014 1.0 NaN 2.0 NaN 3.0
注意:你可能会对Excel做同样的事情。
mnemlml82#
好吧,似乎没有 * 值 * 可供绘制,所以您可能仅限于绘制事物的 * 顺序 *(位置)。例如,2012年的绘图信息将简单地指定顺序A, C, B,而不进行值比较。然而,您已经在2012年的专栏中拥有了这种级别的信息,所以我不确定图形图会增加什么。你 * 绝对 * 不需要一个图表来显示每年的位置1(根据你的评论之一),因为这些信息很容易通过查看表格的单行来识别。图表的目的是使数据更加明显,而不仅仅是提供一个漂亮的图片,尽管管理顾问群体的倾向:-)如果你确实想显示相关的位置,有两种可能性,给每个位置分配一个“假”值,计算为像4 - position这样的值,它会将位置{1, 2, 3}转换为值{3, 2, 1},因此给第一个位置一个更高的值。首先,一系列饼图,每年一个,显示基于这些假值的项目。这会给予你类似的东西(抱歉渲染得很粗糙,我在Word中很快就完成了):
A, C, B
4 - position
{1, 2, 3}
{3, 2, 1}
第二,你可以将它呈现为一个分类的条形图,类似于(需要添加2013年和其他年份的数据):
2条答案
按热度按时间envsm3lx1#
您可以使用
pandas
和matplotlib
来旋转 Dataframe 并绘制图形:输出:
旋转的 Dataframe :
注意:你可能会对Excel做同样的事情。
mnemlml82#
好吧,似乎没有 * 值 * 可供绘制,所以您可能仅限于绘制事物的 * 顺序 *(位置)。
例如,2012年的绘图信息将简单地指定顺序
A, C, B
,而不进行值比较。然而,您已经在2012年的专栏中拥有了这种级别的信息,所以我不确定图形图会增加什么。
你 * 绝对 * 不需要一个图表来显示每年的位置1(根据你的评论之一),因为这些信息很容易通过查看表格的单行来识别。图表的目的是使数据更加明显,而不仅仅是提供一个漂亮的图片,尽管管理顾问群体的倾向:-)
如果你确实想显示相关的位置,有两种可能性,给每个位置分配一个“假”值,计算为像
4 - position
这样的值,它会将位置{1, 2, 3}
转换为值{3, 2, 1}
,因此给第一个位置一个更高的值。首先,一系列饼图,每年一个,显示基于这些假值的项目。这会给予你类似的东西(抱歉渲染得很粗糙,我在Word中很快就完成了):
第二,你可以将它呈现为一个分类的条形图,类似于(需要添加2013年和其他年份的数据):