noo*_*ook 13 python plot numpy matplotlib
在绘制一些点时,matplotlib我在创建图形时遇到了一些奇怪的行为.以下是生成此图表的代码.
import matplotlib.pyplot as plt
desc_x =[4000,3000,2000,2500,2750,2250,2300,2400,2450,2350]
rmse_desc = [.31703 , .31701, .31707, .31700, .31713, .31698, .31697, .31688, .31697, .31699]
fig = plt.figure()
ax = plt.subplot(111)
fig.suptitle('title')
plt.xlabel('x')
plt.ylabel('y')
ax.plot(desc_x, rmse_desc, 'b', label='desc' )
ax.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
这是它创建的图表

如您所知,此图形具有相交线,这是线图中看不到的.当我隔离点,并且不绘制线条时,我得到了这个结果:

如您所知,有一种方法可以连接这些点而不相交线.
为什么matplotlib这样做?我想我可以通过不对我的xcolumn进行排序来修复它,但如果我对它进行排序,我将失去从x1到y1的映射.
YXD*_*YXD 21
您可以使用numpy的argsort功能维护订单.
Argsort"...返回一个与排序顺序的给定轴上的索引数据形状相同的索引数组.",因此我们可以使用它来重新排序x和y坐标.以下是它的完成方式:
import matplotlib.pyplot as plt
import numpy as np
desc_x =[4000,3000,2000,2500,2750,2250,2300,2400,2450,2350]
rmse_desc = [.31703 , .31701, .31707, .31700, .31713, .31698, .31697, .31688, .31697, .31699]
order = np.argsort(desc_x)
xs = np.array(desc_x)[order]
ys = np.array(rmse_desc)[order]
fig = plt.figure()
ax = plt.subplot(111)
fig.suptitle('title')
plt.xlabel('x')
plt.ylabel('y')
ax.plot(xs, ys, 'b', label='desc' )
ax.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
3961 次 |
| 最近记录: |