使用 Excel 中已有的数据生成带有 Python 的饼图而不覆盖 Excel 文件
Generate Pie Chart with Python with already existing data from Excel without overwriting the Excel file
我是 Pandas 和数据框以及所有这些的新手,我一直在尝试使用 [=36= 中已有的数据生成一些图表(确切地说是饼图) ] 文件。
我有一个包含大量数据的工作表。从该工作表中,我使用 openpyxl 生成了一个新工作表,在其中我将一些公式添加到 return 一些值,如下所示:
https://i.stack.imgur.com/ojM2R.png
这里还有内容:
+----------------------------------------------------+
| User | Total | Open | Closed | Fixed |Rejected |
+----------------------------------------------------+
| James 23 7 16 7 12 |
| Michael 2 1 1 1 0 |
| Andreas 11 7 4 3 3 |
| Betty 6 2 4 1 3 |
+----------------------------------------------------+
我现在要做的是生成一个包含用户和其他每一列的饼图(一个饼图用户 X 总票数,一个饼图包含用户 X 开放票数等等)
我已经尝试过 xlsxwritter,但它覆盖了我的整个文档并且无法正常工作。
所有不会覆盖我的文档的 openpyxl 示例都包含随机生成的数据,而不是来自 Excel 文件的现有数据,而且我不知道如何用我想做的事情来实现这些方法。
你能帮我理解我应该做什么以及如何做吗?
我也想知道这是否是一种生成饼图的方法,就像公式一样。像
(=PIECHART(Sheet!B1:B5,Sheet!C1:C5))
.
非常感谢,
干杯,
阿林
IIUC,
df.set_index('User').T.plot.pie(subplots=True, figsize=(15,10), layout=(2,2))
plt.tight_layout()
输出:
更新:
df.set_index('User').plot.pie(subplots=True, figsize=(15,10), layout=(2,3))
plt.tight_layout()
我是 Pandas 和数据框以及所有这些的新手,我一直在尝试使用 [=36= 中已有的数据生成一些图表(确切地说是饼图) ] 文件。
我有一个包含大量数据的工作表。从该工作表中,我使用 openpyxl 生成了一个新工作表,在其中我将一些公式添加到 return 一些值,如下所示:
https://i.stack.imgur.com/ojM2R.png
这里还有内容:
+----------------------------------------------------+
| User | Total | Open | Closed | Fixed |Rejected |
+----------------------------------------------------+
| James 23 7 16 7 12 |
| Michael 2 1 1 1 0 |
| Andreas 11 7 4 3 3 |
| Betty 6 2 4 1 3 |
+----------------------------------------------------+
我现在要做的是生成一个包含用户和其他每一列的饼图(一个饼图用户 X 总票数,一个饼图包含用户 X 开放票数等等)
我已经尝试过 xlsxwritter,但它覆盖了我的整个文档并且无法正常工作。 所有不会覆盖我的文档的 openpyxl 示例都包含随机生成的数据,而不是来自 Excel 文件的现有数据,而且我不知道如何用我想做的事情来实现这些方法。
你能帮我理解我应该做什么以及如何做吗?
我也想知道这是否是一种生成饼图的方法,就像公式一样。像
(=PIECHART(Sheet!B1:B5,Sheet!C1:C5))
.
非常感谢, 干杯, 阿林
IIUC,
df.set_index('User').T.plot.pie(subplots=True, figsize=(15,10), layout=(2,2))
plt.tight_layout()
输出:
更新:
df.set_index('User').plot.pie(subplots=True, figsize=(15,10), layout=(2,3))
plt.tight_layout()