Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何定位matplotlib';s按钮,而不移动标题和标签_Python_Python 3.x_Matplotlib - Fatal编程技术网

Python 如何定位matplotlib';s按钮,而不移动标题和标签

Python 如何定位matplotlib';s按钮,而不移动标题和标签,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,我是matplotlib/Python的一名内部人员,正在构建一个动画散点图。我想在绘图下方放置一个按钮,以便用户可以启动/暂停/恢复动画。这是情节(我知道这是一个混乱,仍在努力): 首先,我尝试添加一个名为Play的按钮,以便在动画第一次自动执行后重放动画,但我很难理解如何将其定位在绘图下方,因为它会“拖动”所有内容(标题、xlabel、ylabel等): 代码如下: import pandas as pd import matplotlib.pyplot as plt import ma

我是matplotlib/Python的一名内部人员,正在构建一个动画散点图。我想在绘图下方放置一个按钮,以便用户可以启动/暂停/恢复动画。这是情节(我知道这是一个混乱,仍在努力):

首先,我尝试添加一个名为Play的按钮,以便在动画第一次自动执行后重放动画,但我很难理解如何将其定位在绘图下方,因为它会“拖动”所有内容(标题、xlabel、ylabel等):

代码如下:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import mplcursors
from matplotlib.animation import FuncAnimation
from matplotlib.widgets import Slider, Button, RadioButtons

df = pd.read_excel('nations2.xls')
df.head()

uniqueYears = df['Ano'].unique()

font = {'family': 'sans-serif',
    'color':  'black',
    'weight': 'normal',
    'size': 16,
    }  

fig, ax = plt.subplots()

def animate(frames):   
    ax.clear()    
    data = df[df['Ano'] == uniqueYears[frames]]
    ax.scatter(y = data['ExpecVida'],
    x = data['PIBperCapita'],
    s = data['PopX1000']/40000,
    c = data['Regiao'].astype('category').cat.codes,
    cmap = cm.viridis,
    edgecolors = 'none',
    alpha = 0.5)

    ax.set_xlim([0,50000], auto=True)
    ax.set_ylim([0,100], auto=True)

    plt.title('Wealth and Health of Nations', fontsize=18)
    plt.xlabel('GDP per Capita ($)', fontsize=14)
    plt.ylabel('Life Expectancy (years)', fontsize=14)
    plt.grid(color = '#A9A9A9')
    plt.text(2, 0.65, uniqueYears[frames], fontdict=font)

    for i, txt in enumerate(data['Pais']):
        ax.annotate(txt, (data['PIBperCapita'].iat[i], data['ExpecVida'].iat[i]), fontsize = 6)


anim = FuncAnimation(fig, animate, frames=len(uniqueYears),interval = 200, repeat=False)

class Index(object):
ind = 0

def play(self, event):
    FuncAnimation(fig, animate, frames=len(uniqueYears),interval = 200, repeat=False)

callback = Index()
axplay = plt.axes([0.81, 0.05, 0.1, 0.075])
bplay = Button(axplay, 'Play')
bplay.on_clicked(callback.play)

按钮本身的位置正确。其他所有内容可能都放错了位置,但由于您没有在此处显示,因此很难判断到底出了什么问题。@importantanceofbeingernest我忽略了我认为与问题无关的内容,但我刚刚用其余代码对其进行了更新。啊,好的;使用多个轴时不要使用pyplot。将
plt.title(“…”)替换为
ax.set\u title(“…”)
等。