python matplotlib只打印整数

2024-06-02 19:06:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python很陌生。两天。尝试使用matplotlib获取绘图。我得到这个错误:

cannot perform reduce with flexible type

出现错误的行是:

ax.scatter(x,y,z,marker='o')

变量:

ax定义为:ax = Axes3D(fig)

图定义为:fig = plt.figure()

x,y,z是列表

有没有python专家告诉我为什么?我已经画好了图,但数值是整数。首选十进制值。

我读到python中的列表不太适合数字。。。有人能澄清吗?我让它与列表和ndarray一起工作,但是所有的值都必须是整数。

谢谢!


Tags: 绘图reduce列表定义matplotlibtype错误with
2条回答

将您的代码与此basic scatter plot code进行比较。注意,xsyszs是ndarrays浮点。这个代码对你有用吗?也许你可以逐渐地将代码转换成你自己的代码,从而得到有效的代码(或者学习你的代码在哪里中断)。

如果这没有帮助,也许可以发布足够的代码来让我们重现问题。至少,将

print(repr(x))
print(repr(y))
print(repr(z))

谢谢你的回复。

我让它和花车一起工作,但也许你们都能告诉我为什么。我刚在这里创建了一个帐户,无法编辑我的客人问题。。。

我正在从sqlite数据库中获取数据。我可以将sql或cast中的值舍入为浮点数,这样就可以工作了。我猜数据是一个数值对象,尽管它是数值的。是这样吗?

下面是一段不起作用的代码摘录。我通过将值作为浮点数来实现它。


import sqlite3
import re
import numpy as np
from numpy import *
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

conn = sqlite3.connect('./RES/resDB.dbl')

fig = plt.figure()
ax = Axes3D(fig)

sam = array([])
x = array([])
y = array([])
z = array([])

for sv in conn.execute('select sam,easting,northing,altitude from trx_all'):
    sam = np.append(sam, [sv[0]]) #this works: sam = np.append(sam, [float(sv[0])])
    x = np.append(x, [sv[1]]) #this works: x = np.append(x, [float(sv[1])])
    y = np.append(y, [sv[2]]) #this works: y = np.append(y, [float(sv[2])])
    z = np.append(z, [sv[3]]) #this works: z = np.append(z, [float(sv[3])])
if sam.__len__() > 0:
    print(repr(x))
    print(repr(y))
    print(repr(z))
    ax.scatter(x, y, z, marker='o')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title("3D plot")
plt.show()

联合国大学请求打印输出(repr(x)):


x: array([u'227004.744896075', u'227029.694213685', u'227051.351657645', ...,
       u'226416.484484696', u'226436.436477995', u'226401.253669657'],
      dtype='U16')
y: array([u'3648736.75423911', u'3648737.3357031', u'3648746.34280013', ...,
       u'3645870.67565062', u'3645893.61216942', u'3645866.95833722'],
      dtype='U16')
z: array([u'1600.2589433603', u'1535.77224937826', u'1429.01016684435', ...,
       u'341.064685015939', u'343.452275622636', u'312.491347198375'],
      dtype='U16')

最后是它在ax.scatter(x,y,z,marker='o')行上输出的错误:


Traceback (most recent call last):
  File "C:\stripped_3dplot.py", line 27, in 
    ax.scatter(x, y, z, marker='o')
  File "C:\Python27\lib\site-packages\mpl_toolkits\mplot3d\axes3d.py", line 1019, in scatter
    patches = Axes.scatter(self, xs, ys, *args, **kwargs)
  File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 5813, in scatter
    minx = np.amin(temp_x)
  File "C:\Python27\lib\site-packages\numpy\core\fromnumeric.py", line 1846, in amin
    return amin(axis, out)
TypeError: cannot perform reduce with flexible type

就像我说的,我认为这只是错误的类型,但如果你们都能告诉我是什么类型导致了错误,我可以学到一些东西。

谢谢。

相关问题 更多 >