如何在pandas或matplotlib中停止绘制折线图

5

我的挑战是绘制以列形式组织的许多数据序列(其中每列是相同标识符(ID)的许多模拟的数据),并且 pandas dataframe 的索引是模拟的月份。问题在于pandas链接同一列中不同模拟所创建的线。

看一下复制问题的示例。我该如何修复它?

# import library
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# create da dataset
columns = ['A','B']
data = np.array([np.random.randint(10, size=15),
             np.random.randint(10, size=15)]).T
index = list(range(0,5))*3
dataset = pd.DataFrame(data, index=index, columns=columns)

# plotting 
plot_data = dataset.plot(title='Example StackOverflow')
plot_data.set_xlabel('Years')
plot_data.set_ylabel('Values')
plot_data.legend(loc='best', ncol=4, fancybox=True, shadow=True)
plot_data.set_axis_bgcolor('w')
fig = plot_data.get_figure()
fig.savefig('example_figure_stackoverflow.png', dpi=400)

结果

将线连接成问题的绘图结果


这是一个关于IT技术的图片,它展示了将线连接成一个问题时的绘图结果。
1个回答

1
这里有一个直接使用matplotlib的解决方案:
# code until "plotting" same as question

# plotting
simlen = 5
for c in columns:
  for i in range(0, len(index), simlen):
    plt.plot(index[i:i+simlen], dataset[i:i+simlen][c],
      color=dict(A='b', B='g')[c],
      label=c if i == 0 else None)
plt.legend()
plt.show()

(我假设每个模拟的长度都是5,这在您的问题中并不明确。请注意,数据的结构可能不同,因为pandas不再用于绘图。)
这里是输出: 示例图片

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