猿问

为什么垫字图给我很多台词,而不是我图中的一条线?

我正在生成数据并将它们存储在一个numpy数组中。我还在计算一个变量并将这些变量存储在另一个数组中。它们具有不同的形状和ndims,但它们是可绘制的,因为我尝试了另一个具有相同逻辑的简单代码。


import numpy as np

import matplotlib.pyplot as plt


a = np.array([0.05718623, 0.05446883, 0.04395619, 0.03004849])

b = np.array([[0.61745], [0.45825], [0.80061], [0.3719]])

plt.yscale('log')

plt.xscale('log')

plt.plot(a,b)

plt.show()

当我想用我存储的数据绘制两个数组时,使用以下代码:


works = [Data]

probability = [Data2]

plt.yscale('log')

plt.xscale('log')

plt.plot(probability, works)


我得到这个:

http://img1.mukewang.com/63206b1b0001800a03200239.jpg

然而,当我在plt.plot()中放置一个“bo”时,我得到这个:


works = [Data]

probability = [Data2]

plt.yscale('log')

plt.xscale('log')

plt.plot(probability, works, 'bo')

http://img2.mukewang.com/63206b270001000503150238.jpg

所以我不想要蓝点。取而代之的是,我想要一条像蓝点一样的曲线。我在这里错过了什么?这背后的问题是什么?或者这个问题需要我如何生成我的数据?

PS: 数据数字 = (1000,) 数据 2.ndim = (1000,1)


神不在的星期二
浏览 95回答 1
1回答

杨__羊羊

plt.plot(probability, works)按照输入数组中列出的顺序将所有 dotes 与线段连接。例如, 按给定的顺序在 (1,1)、(2,4) 和 (3, 9) 之间建立一个很好的分段线连接。另一方面,将 (1,1) 与 (3, 9) 与线段连接,(3, 9) 和 (2, 4) 与线段连接 - 我们在后一种情况下得到一个丑陋的情节。plt.plot([1,2,3], [1,4,9])plt.plot([1,3,2], [1,9,4])正如JohanC所建议的那样,您需要对数据进行排序。仅对第一个数组进行排序就会破坏对应关系:对应于 。因此,我们需要排序 ,但保持对应关系。 冻结通信。 在Python中首先按第一个索引排序,即,它将对数据进行排序。最后,我们需要撤消并取回我们的两个数组。 正是这样做的。Data[0]Data2[0]Datazip(Data, Data2)sortedzipzip(*sorted(zip(Data, Data2))
随时随地看视频慕课网APP

相关分类

Python
我要回答