python - 如何在具有列表值的列的熊猫中创建多条线图?
问题描述
我想知道如何绘制具有列表作为元素的列的熊猫数据框的多线图。
例如,我可以使用这些数据绘制两个图:
import numpy as np
import pandas as pd
import seaborn as sns
sns.set(color_codes=True)
import matplotlib.pyplot as plt
%matplotlib inline
df = pd.DataFrame({
'pig': [20, 18, 489, 675, 1776],
'horse': [4, 25, 281, 600, 1900]},
index=[1990, 1997, 2003, 2009, 2014])
df.plot.line()
但是,如何为以下数据绘制类似的两个图?
df1 = pd.DataFrame({
'pig': [[20, 18, 489, 675, 1776],[20, 18, 489, 675, 1776]],
'horse': [[14, 25, 271, 700, 1900],[14, 65, 381, 600, 1900]]},
index=['A','B']
)
print(df1)
pig horse
A [20, 18, 489, 675, 1776] [14, 25, 271, 700, 1900]
B [20, 18, 489, 675, 1776] [14, 65, 381, 600, 1900]
对于每个索引 A 和 B,我想要 x 轴 = 猪和 y 轴 = 马图。但我不确定该怎么做。非常感谢您的帮助。
解决方案
您可以遍历索引,但这不是 Pandas 中的最佳做法,但它适用于您的情况:
import pandas as pd
import matplotlib.pyplot as plt
df1 = pd.DataFrame({
'pig': [[20, 18, 489, 675, 1776],[20, 18, 489, 675, 1776]],
'horse': [[14, 25, 271, 700, 1900],[14, 65, 381, 600, 1900]]},
index=['A','B']
)
for idx in df1.index.values:
plt.plot(df1['pig'].loc[idx], df1['horse'].loc[idx], label=idx)
plt.legend()
plt.xlabel('Pig')
plt.ylabel('Horse')
plt.show()
推荐阅读
- php - printing unicode in php from MySQL database results in encoding error
- node.js - npm deep audit vulnerability
- ios - position fixed in the iphone X webview
- javascript - Check if a number is a multiple of 0.10
- angular - 通过更改 .filteredData 属性更新 mat-table 内容
- r - Quantmod 包在 R 中传递参数
- encryption - Erlang cookie 与 RabbitMQ 集群中的节点间 TLS 通信
- amazon-web-services - 在 AWS EC2 上创建新的 Service Fabric 集群
- directed-acyclic-graphs - 以下文法的 LR(1) 项集是什么?
- asp.net - IIS7.5 URLRewrite 在自定义 404 错误页面上不起作用