我想我在matplotlib的工作流程中遗漏了一些东西......我试图创建一个自定义大小的图形,添加一些东西,然后添加第二个轴:
#temp graph
import matplotlib.pyplot as plt
plt.cla()
plt.clf()
plt.close()
df = r
fig = plt.figure(figsize=(14,6))
ax = fig.add_subplot()
#r is a dataframe filled with a bunch of data
myplot = r[r.index<=100]["TOTAL DATA"].apply(lambda x:x/1000).plot(kind='bar')
ax2 = ax.twinx()
plt.show()
这给了我以下错误:
AttributeError Traceback(最近一次调用 最后)in() 13 14 ---&GT; 15 ax2 = ax.twinx() 16 17 plt.show()
AttributeError:&#39; NoneType&#39;对象没有属性&#39; twinx&#39;
有什么想法?谢谢!
答案 0 :(得分:1)
函数fig.add_subplot()
返回nothing
(无),因此您将没有新的Axes。您必须使用plt.subplots()
函数,它返回一个Figure对象和一个Axes对象
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
plt.cla()
plt.clf()
plt.close()
r = pd.DataFrame(np.random.randn(6,1),columns=['TOTAL DATA'])
fig, ax= plt.subplots(figsize=(14, 6))
myplot = r[r.index<=100]["TOTAL DATA"].apply(lambda x:x/1000).plot(kind='bar')
ax2 = ax.twinx()
plt.show()
答案 1 :(得分:0)
简单的问题。 ax变量不是范围内的轴。 myplot是。 myplot.twinx()有效。
答案 2 :(得分:0)
在问题的尝试方向上看更多,代码中唯一的问题是ax = fig.add_subplot()
返回None
,因为它没有给出参数。
通常的方法是调用实际创建子图的ax = fig.add_subplot(111)
或任何其他(一组)参数。 See documentation
因此,如果给出该参数,问题中的代码可以正常工作。
import matplotlib.pyplot as plt
import pandas as pd
r = pd.DataFrame({"TOTAL DATA" : [1000,2000,3000]})
fig = plt.figure(figsize=(14,6))
ax = fig.add_subplot(111)
myplot = r[r.index<=100]["TOTAL DATA"].apply(lambda x:x/1000).plot(kind='bar')
ax2 = ax.twinx()
plt.show()