如何在 matplotlib 图中显示数据
How to display data in a matplot plot
我正在尝试在 jupyter notebook
中制作交互式绘图,但我不知道具体如何实现它。有一个数据框 i 运行 一个简单的回归,然后绘制它以查看分布。我希望能够悬停其中一个点并获取与该点相关的数据。我怎样才能做到这一点?现在我只能制作静态图
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 inline
后端不允许交互,因为它是内联的(在绘图是图像的意义上)。
然而,即使在笔记本中,您也可以使用 %matplotlib notebook
后端进行交互。一个基本的悬停动作已经实现:在 canvas 中移动鼠标会在右下角的数据坐标中显示当前鼠标位置。
当然,您可以通过编写一些自定义代码来获得更复杂的功能。例如。我们可以将 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 工具使其更漂亮。
我正在尝试在 jupyter notebook
中制作交互式绘图,但我不知道具体如何实现它。有一个数据框 i 运行 一个简单的回归,然后绘制它以查看分布。我希望能够悬停其中一个点并获取与该点相关的数据。我怎样才能做到这一点?现在我只能制作静态图
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 inline
后端不允许交互,因为它是内联的(在绘图是图像的意义上)。
然而,即使在笔记本中,您也可以使用 %matplotlib notebook
后端进行交互。一个基本的悬停动作已经实现:在 canvas 中移动鼠标会在右下角的数据坐标中显示当前鼠标位置。
当然,您可以通过编写一些自定义代码来获得更复杂的功能。例如。我们可以将 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 工具使其更漂亮。