【问题标题】:Axes3D.text() Annotate 3D Scatter PlotAxes3D.text() 注释 3D 散点图
【发布时间】:2019-05-24 12:56:00
【问题描述】:

无法使用 3D 文本来注释散点图。

尝试过 Axes3D.text、plt.text 但不断收到“缺少所需的位置参数 's”。如何在循环中进行 3D 注释?

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
import pandas as pd
import numpy as np

df = pd.read_csv (r'J:\Temp\Michael\Python\9785.csv')

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

#Scatter plot
for i in df.index:
    x = df.at[i,'x']
    y = df.at[i,'y']
    z = df.at[i,'h']
    ax.scatter(xs=x, ys=y, zs=z, s=20,color='red',marker='^')
    label = df.at[i,'to']
    Axes3D.text(x+0.8,y+0.8,z+0.8, label, zdir=x)

TypeError: text() 缺少 1 个必需的位置参数:'s'

【问题讨论】:

  • Here是官方文档
  • @Sheldore 谢谢我一直在检查那些并试图正确,但无法让它以某种方式工作......
  • 提供您的数据框的一些初始行,以便我们可以运行您的代码
  • 问题在于图形类型 - fig.gca() 已修复

标签: python loops matplotlib text 3d


【解决方案1】:

变化:ax = fig.add_subplot(111, projection='3d')

到:ax = fig.gca(projection='3d')

解决了这个问题。用过 ax.text。

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
import pandas as pd
import numpy as np

df = pd.read_csv (r'J:\Temp\Michael\Python\9785.csv')

fig = plt.figure()
ax = fig.gca(projection='3d')

#Scatter plot
for i in df.index:
    df.set_index('to')
    x = df.at[i,'x']
    y = df.at[i,'y']
    z = df.at[i,'h']
    ax.scatter(xs=x, ys=y, zs=z, s=20,color='red',marker='^')
    ax.text(x+0.8,y+0.8,z+0.8, df.at[i,'to'], size=10, zorder=1)

【讨论】:

    猜你喜欢
    • 2012-05-09
    • 2018-06-19
    • 1970-01-01
    • 2016-08-20
    • 2021-05-19
    • 1970-01-01
    • 2016-10-18
    相关资源
    最近更新 更多