【问题标题】:How to display data in a matplot plot如何在 matplotlib 图中显示数据
【发布时间】:2017-07-30 21:45:26
【问题描述】:

我正在尝试在jupyter notebook 中制作交互式绘图,但我不知道如何实现它。拥有一个数据框,我运行一个简单的回归,然后绘制它以查看分布。我希望能够悬停其中一个点并获取与该点相关的数据。我怎样才能做到这一点?现在我只能制作一个静态图

import pandas as pd
from sklearn import linear_model
%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt

net = pd.read_csv("network_ver_64.csv")
net = net[net.AWDT12 > 0]

x = net.LOAD_DAILY.values
y = net.AWDT12.values
x_lenght = int(x.shape[0])
y_lenght = int(y.shape[0])
x = x.reshape(x_lenght, 1)
y = y.reshape(y_lenght,1)
regr = linear_model.LinearRegression()
regr.fit(x, y)

plt.scatter(x, y,  color='black')
plt.plot(x, regr.predict(x), color='blue', linewidth=1)
plt.xticks(())
plt.yticks(())
plt.show()

【问题讨论】:

  • 据我所知,您无法使用 matplotlib 获得悬停功能。您必须尝试d3.jsbokeh
  • @MainulIslam 不错。是的,我不知道这些模块,我会检查它们以了解它们
  • Plot.ly 也值得一试。
  • @Mainul matplotlib 中有一个内置的悬停功能,在 jupyter 中也可以使用notebook 后端。除此之外,任何类型的交互都可以通过编程方式实现。请参阅下面的答案。

标签: python pandas matplotlib ipython-notebook


【解决方案1】:

首先,很明显%matplotlib inline 后端不允许交互,因为它是内联的(在某种意义上,图是图像)。

但是,即使在笔记本中,您也可以使用 %matplotlib notebook 后端进行交互。已经实现了基本的悬停:在画布中移动鼠标会在右下角的数据坐标中显示当前鼠标位置。

当然,您可以通过编写一些自定义代码来获得更复杂的功能。例如。我们可以稍微修改picking example如下:

import matplotlib.pyplot as plt
%matplotlib notebook
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_title('click on points')

line, = ax.plot(np.random.rand(100), 'o', picker=5)  # 5 points tolerance
text = ax.text(0,0,"")
def onpick(event):
    thisline = event.artist
    xdata = thisline.get_xdata()
    ydata = thisline.get_ydata()
    ind = event.ind
    text.set_position((xdata[ind], ydata[ind]))
    text.set_text(zip(xdata[ind], ydata[ind]))

fig.canvas.mpl_connect('pick_event', onpick)

plt.show()

现在显示鼠标点击点的数据坐标。

您可以随意调整它以适应您喜欢的任何情况,并使用标准的 matplotlib 工具使其更漂亮。

【讨论】:

    猜你喜欢
    • 2011-04-21
    • 2012-01-24
    • 2021-09-29
    • 2023-03-06
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    相关资源
    最近更新 更多