【发布时间】:2018-12-01 07:35:12
【问题描述】:
使用 ubuntu 18.04.1 lts python 3.6.7 matplotlib 2.1.1 pandas 0.23.4 并尝试在折线图上绘制以下测试数据。所以它应该以一条从左到右的线结束,点在 10 50 100
the x_axes = hv_20 hv_10 hv_5
the y axes = 10 50 100
下面的代码似乎正在绘制
the x_axes = **hv_10 hv_20** hv_5
the y_axes = **50 10** 100
我不知道为什么,似乎也找不到对我有帮助的文档。
请问我做错了什么?
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
def mini_plot( data_frame ):
fig, axes = plt.subplots(nrows=20 , ncols=10, sharey=True, figsize=(10,5))
axes_list = [item for sublist in axes for item in sublist]
for index, row in data_frame.iterrows():
ax = axes_list.pop(0)
y_axes = pd.DataFrame(data_frame.iloc[ index ].values[3:6])
print("index = ", data_frame.iloc[ index ][3:6].index)
plt.ylim(0 , 100)
ax.set_xlabel(row.Symbol ,labelpad= 0 )
#x_axes = ['20', '10' , '5' ]
x_axes = data_frame.iloc[ index ][3:6].index
#ax.set_xticklabels( x_axes )
ax.plot( x_axes, y_axes , label = "min", color= 'g' , linestyle='solid', linewidth=0.5)
for ax in axes_list:
ax.remove()
plt.show()
if __name__ == '__main__' :
test_data = [ ('20181126#AAPL' , '2018-11-26', 'AAPL' , 10, 50, 100) ]
test_labels = [ 'Id', 'Date' , 'Symbol' , 'Hv_20' , 'Hv_10', 'Hv_5' ]
df_todays_data = pd.DataFrame.from_records( test_data , columns = test_labels)
mini_plot( df_todays_data )
【问题讨论】:
-
它在我的环境中按预期绘制 10-50-100。较旧的 matplotlib 版本自动对分类数据进行排序(
Hv20等)。更新你的 matplotlib,你的问题就消失了。 -
@Mr.T 感谢回复我正在运行matplotlib 2.1.1 请问你运行的是哪个版本?
-
@theakson matplotlib 目前正在发布 3.0.x,如果可能,我会更新到最新版本。
-
更新将是
pip3 install --upgrade matplotlib。 -
很高兴它现在可以工作了。祝你的项目好运。