S.M*_*ria 5 matplotlib python-3.x scatter3d
我尝试在Python中使用字符串类别(即神经网络的激活函数和求解器)对x和y以及z轴上的浮点数(即NN的精度得分)进行3D散点图.
以下示例引发错误:ValueError:无法将字符串转换为float:'str1'
我按照这个文档描述了3D图:https://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html
任何想法,可能是什么问题?提前谢谢了!
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
xs=['str1', 'str2']
print(type(xs))
ys=['str3', 'str4']
print(type(ys))
zs=[1,2]
ax.scatter(xs, ys, zs)
Run Code Online (Sandbox Code Playgroud)
您试图将类别值(字符串)作为x和y参数传递。这将适用于1d散点图,但在3d中,您需要定义跨度/笛卡尔坐标。您主要希望拥有的字符串是x和y轴刻度标签。要获得所需的图,您可以做的是首先绘制数字值,然后根据您的字符串值重新分配刻度线标签。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
xs=['str1', 'str2']
ys=['str3', 'str4']
zs=[1,2]
ax.scatter(range(len(xs)), range(len(xs)), zs)
ax.set(xticks=range(len(xs)), xticklabels=xs,
yticks=range(len(xs)), yticklabels=xs)
Run Code Online (Sandbox Code Playgroud)
您也可以使用
plt.xticks(range(len(xs)), xs)
plt.yticks(range(len(ys)), ys)
Run Code Online (Sandbox Code Playgroud)
ax但是,第一个选项使用允许您在一行中执行相同的操作。
| 归档时间: |
|
| 查看次数: |
528 次 |
| 最近记录: |