我有一个包含84行和3列的数据框dd

现在,我想用它绘制一个Area Plot,并将它的索引用作xticks,所以我要执行以下操作:

dd.plot(kind='area')
plt.show()

但是我得到了这个结果:
python - ConversionError : Failed to convert value(s) to axis units-LMLPHP

(P.S.我没有足够的声誉来发布图片,因此在此放置了此链接。)

事实证明,有些xtick是自动隐藏的:应该有84个xtick,但是只显示了9个(似乎是自动隐藏的)。

我发现了一个类似的问题here,但是当我尝试链接中提到的方法时,我得到了一个CnoversionError:

ConversionError: Failed to convert value(s) to axis units: Index(['!', '"', '#', '$', '%', '&', ''', '(', ')', '*', '+', ',', '-', '.',
       '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<',
       '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
       'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
       'Y', 'Z', '[', '\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f',
       'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't'],
      dtype='object')

我注意到我的问题和上面的链接之间的区别是我的DataFrame的索引具有dtype object(它们是字符串),并且我发现,如果将索引更改为int列表,该错误就会消失。

重现该错误的代码:

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

dd=pd.DataFrame(np.random.rand(84,3),index=[chr(ascii) for ascii in range(33,33+84)])

dd.plot(kind='area',xticks=dd.index)

plt.show()


多谢您的预先回覆!

最佳答案

dd=pd.DataFrame(np.random.rand(84,3),index=[chr(ascii) for ascii in range(33,33+84)])
dd.plot(kind='area')
plt.xticks(range(0,len(dd.index)), dd.index)
plt.show()

python - ConversionError : Failed to convert value(s) to axis units-LMLPHP

关于python - ConversionError : Failed to convert value(s) to axis units,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58814857/

10-10 03:08