我正在研究用于 RGB 分析的 3D 散点图,该图从 .xlsx[enter 获取数据点。我已将列出的可能标记和颜色设置为:
标记= [“。” , "," , "o" , "v" , "^" , "<", ">",] 颜色 = ['r','g','b','c','m','y','k']
我无法找到正确的代码来为每个数据点提取标记和颜色。
我尝试在此行中添加标记和颜色列:
由此(生成良好的图表) ax.scatter3D(df['R'], df['G'], df['B'], alpha = 0.5)
对此: fg = ax.scatter3D(df['R'], df['G'], df['B'], df['M'], 标记 = 'M', df['C'], 颜色 = ' C', 阿尔法 = 0.5)
whish 生成空图,我得到“ Syntac
但它会生成这个:
fg = ax.scatter3D(df['R'], df['G'], df['B'], df['M'], markers = 'M', df['C'], colors = 'C', alpha = 0.5)
^
语法错误:位置参数跟随关键字参数
^ 符号位于右括号下方
这是我的代码:
import seaborn as sns
import pandas as pd
import ezodf
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
markers = ["." , "," , "o" , "v" , "^" , "<", ">",]
colors = ['r','g','b','c','m', 'y', 'k']
sns.set_style("whitegrid", {'axes.grid' : False})
df = pd.read_excel ('/Users/stanbrown/Desktop/Plot 3D/RGB plots 1.xlsx')
print(df.head)
print(df.columns)
fig = plt.figure(figsize=(6,6))
ax = plt.axes(projection='3d')
fg = ax.scatter3D(df['R'], df['G'], df['B'], alpha = 0.5)
ax.set_xlabel('Red')
ax.set_ylabel('Green')
ax.set_zlabel('Blue')
plt.show()
您收到的错误“SyntaxError:位置参数跟随关键字参数”是因为您混淆了向
scatter3D
函数提供参数的方式。
在您的代码中,
df['M']
和df['C']
被解释为位置参数,但它们位于关键字参数markers='M'之后,这是不允许的。
以下是如何通过使用循环来修复代码以正确使用 DataFrame 中的标记和颜色列,因为当您像现在一样使用标记参数时,
matplotlib
期望所有点使用单一标记样式:
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
sns.set_style("whitegrid", {'axes.grid' : False})
df = pd.read_excel('/Users/stanbrown/Desktop/Plot 3D/RGB plots 1.xlsx')
print(df.head)
print(df.columns)
fig = plt.figure(figsize=(6,6))
ax = plt.axes(projection='3d')
for i in range(len(df)):
ax.scatter3D(df['R'][i], df['G'][i], df['B'][i],
marker=df['M'][i], c=df['C'][i], alpha=0.5)
ax.set_xlabel('Red')
ax.set_ylabel('Green')
ax.set_zlabel('Blue')
plt.show()
应显示什么: