2015-03-31 5 views
1

У меня есть 3D-линейный график солнечного спектра, который я построенный с помощью команды,Python - окрасить 3d линейного график

from mpl_toolkits.mplot3d.axes3d import Axes3D 
from matplotlib.collections import PolyCollection, LineCollection 
from matplotlib.colors import colorConverter, ListedColormap, BoundaryNorm 
import matplotlib.cm as cm 

fig = plt.figure(figsize(15, 8)) 
ax = fig.gca(projection='3d') 

x = SpectrumDF['Wavelength'] 
z = SpectrumDF['DNI'] 
y = SpectrumDF['TESTNUM'] 

ax.plot(x, y, z) 
ax.set_xlabel('Wavelength') 
ax.set_ylabel('Test Number') 
ax.set_zlabel('Intensity') 

Полученного участок является сплошным синим и принимает в зависимости от того индивидуального цвета Даю в function: plot().

Я пытаюсь создать градиент цвета вдоль оси z, интенсивность, без каких-либо успехов.

У меня около 500 тестовых номеров, каждый из которых имеет 744 точек данных.

Благодарим за помощь!

Это не позволит мне отправлять изображения, потому что у меня недостаточно репутации. Во всяком случае, вот ссылка на сюжет я получаю, используя этот код https://plus.google.com/106871046257785761571/posts/fMYsDF5wAQa

enter image description here

+0

Вы не загружали изображения. Пожалуйста, отредактируйте вопрос –

+0

Какая команда? Повторите попытку, чтобы убедиться, что вы включили код. – aestrivex

+0

Используемая вами команда «plot (x, y, z)» предназначена для параметрической кривой и обычно не имеет цвета, который отличается от 'z', и на самом деле это не так. Вы можете добавить z-цвет с некоторыми усилиями, если хотите, но я предлагаю вам посмотреть примерный сюжет, который выглядит так, как будто он будет работать для ваших данных и работать оттуда. Если вы просто хотите добавить цвет, см. Здесь: http://stackoverflow.com/questions/15617207/line-colour-of-3d-parametric-curve-in-pythons-matplotlib-pyplot (но также, по крайней мере, запишите их как разные кривые для каждого пробного номера). – tom10

ответ

1

Используя пример - Line colour of 3D parametric curve in python's matplotlib.pyplot - я получил график рассеяния с цветовым градиентом вдоль оси Z - вот ссылка на изображение, что участок - https://plus.google.com/u/0/106871046257785761571/posts/SHTsntgQxTw?pid=6133159284332945618&oid=106871046257785761571

enter image description here

Я использовал следующую команду:

fig = plt.figure(figsize(15,8)) 
ax = fig.gca(projection='3d') 

x = FilteredDF['Wavelength'] 
z = FilteredDF['DNI'] 
y = FilteredDF['TESTNUM'] 

ax.scatter(x, y, z, c=plt.cm.jet(z/max(z))) 

ax.set_xlabel('Wavelength') 
ax.set_ylabel('Test Number') 
ax.set_zlabel('Intensity') 

plt.show() 

Я все еще работаю над тем, чтобы получить цветной сюжет, потому что у меня много очков, из-за чего разброс очень медленный.

Спасибо

+0

Спасибо @ tom10 , Не могли бы вы помочь мне раскрасить 3D-сюжет? Я мог бы приложить пример данных, которые у меня есть, если потребуется. –

+0

У вас есть общая проблема, больше данных, чем вы можете легко просмотреть. Я не уверен, что цветная линия - правильная вещь для использования, и это не обязательно ускорит процесс, так как у вас все еще будет около 1 миллиона вещей, которые нужно отобразить. Проблема в том, что вы пытаетесь отобразить столько точек данных. Кроме того, ваш рассеянный график будет выглядеть лучше, если вы удалите края точек: http://matplotlib.org/api/markers_api.html – tom10

+0

В общем, я не хочу загружать данные и делать ваши сюжеты для вас. Обычно решение попробовать отобразить слишком много точек данных - это тщательно продумать, что именно вы действительно хотите показать. Это может быть сделано только вами. – tom10

Смежные вопросы