我想绘制一个大熊猫系列,其中索引是无关紧要的DatatimeIndex。我的代码如下:
import matplotlib.dates as mdates
index = pd.DatetimeIndex(['2000-01-01 00:00:00', '2000-01-01 00:01:00',
'2000-01-01 00:02:00', '2000-01-01 00:03:00',
'2000-01-01 00:07:00',
'2000-01-01 00:08:00'],
dtype='datetime64[ns]')
df = pd.Series(range(6), index=index)
print(df)
plt.plot(df.index, df.values)
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter("%M"))
plt.show()
输出为: 但结果并不是我真正想要的,因为2000-01-01 00:04:00也在图像上绘制。期望的结果是在x轴03:00紧邻07:00并且图像应该是直线。希望你的好主意。
答案 0 :(得分:2)
一种可能的解决方案是将string
转换为s = pd.Series(range(6), index=index)
print(s)
2000-01-01 00:00:00 0
2000-01-01 00:01:00 1
2000-01-01 00:02:00 2
2000-01-01 00:03:00 3
2000-01-01 00:07:00 4
2000-01-01 00:08:00 5
dtype: int32
s.index = s.index.strftime('%M')
s.plot()
并使用strftime
:
arange
另一个解决方案是按x = np.arange(len(s.index))
plt.plot(x, s)
plt.xticks(x, s.index.strftime('%M'))
plt.show()
绘图,然后添加Series.plot
:
public static void CreateItemsList(ref List<Item> itemsList)
{
var doc = XDocument.Load(@"..\..\ItemsXML.xml");
itemsList = doc.Root
.Descendants("ITEM")
.Select(node => new Item
{
ItemName = node.Element("ITEMNAME").Value,
ItemPrice = decimal.Parse(node.Element("ITEMPRICE").Value)
})
.ToList();
Console.WriteLine(string.Join(",", itemsList.Select(x => x.ToString())));
}