Я пытаюсь создать трехмерный сюжет с двумя цветами. Один цвет для значений выше нуля и другой цвет для значений ниже нуля. Я просто не могу понять, как реализовать это в коде.matplotlib Трехмерное кодирование цвета по диапазону значений
Вот мой текущий код:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import matplotlib.tri as mtri
import pandas as pd
import numpy as np
df = pd.DataFrame.from_csv('...temp\\3ddata.csv', sep = ',', index_col = False)
fig = plt.figure()
ax = fig.gca(projection='3d')
x = df['P']
y = df['T']
z = df['S']
ax.plot(x, y, zs= 0, zdir = 'z', c= 'r')
ax.scatter(x,y, z, c = 'b', s = 20)
ax.set_xlabel('Pressure (Bar)')
ax.set_zlabel('Residual subcooling (J*Kg-1*K-1')
ax.set_ylabel('Temperaure of LNG (K)')
plt.show()
Я прочитал несколько примеров, но не могли применить их к моим данным. Можно ли сделать это с помощью цикла for?
или что-то вдоль линий:
use_c = {<=0: "red", >=0 "blue"}
#ax.plot(x, y, zs= 0, zdir = 'z', c= 'r')
ax.scatter(x,y, z, c = [use_c[x[0]] for x in z], s = 20)
Что-то, что связывает значение г к цвету.
Вы можете попробовать использовать сейсмическую палитру http://matplotlib.org/users/colormaps .html – JeD
Какое значение, y или z? –