Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在matplotlib中对齐三维散点栅格上的投影二维打印_Python_Matplotlib_Scatter - Fatal编程技术网

Python 在matplotlib中对齐三维散点栅格上的投影二维打印

Python 在matplotlib中对齐三维散点栅格上的投影二维打印,python,matplotlib,scatter,Python,Matplotlib,Scatter,我对python没有太多经验,只是一门基础课。我正在尝试创建一个散点图,在绘图区域的面上投影三维和二维绘图 这是 到目前为止,我有: import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline from mpl_toolkits.mplot3d import Axes3D dataset = pd.read_csv("dummy

我对python没有太多经验,只是一门基础课。我正在尝试创建一个散点图,在绘图区域的面上投影三维和二维绘图

这是

到目前为止,我有:

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    from mpl_toolkits.mplot3d import Axes3D

    dataset = pd.read_csv("dummy.csv")

    x = dataset.das_avg
    y = dataset.thick_mm
    z = dataset.cool_rate_avg
    color = dataset.temp_mold


    fig= plt.figure(figsize=(10,5)) 
    ax = Axes3D(fig)

    ax.plot(x, z, 'r+', zdir='y', zs=0 ,marker= 'o', alpha=0.05)
    ax.plot(y, z, 'g+', zdir='x', zs=0, marker= 'o', alpha=0.05)
    ax.plot(x, y, 'y+', zdir='z', zs=0, marker= 'o', alpha=0.05)
    ax.scatter(x, y, z, s=20, c=color, cmap=plt.cm.jet)

    ax.set_xlabel('X') 
    ax.set_ylabel('Y') 
    ax.set_zlabel('Z')

    sm = plt.cm.ScalarMappable(cmap=plt.cm.jet, norm=plt.Normalize(vmin=color.min(), vmax=color.max())) 
    sm._A = []
    plt.colorbar(sm)

    plt.show()
到目前为止,一切都很好;但我在调整图表区域网格上的投影图时遇到问题:

例如,黄点应位于网格上的值2上。 在绘图上使用zs值,我可以对齐它们,但当我更改值时,栅格的比例会移动,绘图不会再次对齐

而且,我不能把这些红点推到图表的后面


有什么方法可以做到这一点吗?

只需修改代码中的以下几行,它就会使代码看起来像您想要的那样。您可以根据需要调整
ylim

ax.plot(x, z, 'r+', zdir='y', zs=2.5 ,marker= 'o', alpha=0.05)
ax.plot(x, y, 'y+', zdir='z', zs=0, marker= 'o', alpha=0.05)

ax.set_ylim(0, 2.5) 
ax.set_zlim(0, 600) 
输出


你能说出“把红点推到图表后面”是什么意思吗。你是说在
x-z
平面上?黄点确实位于
y=2
。看起来它们不是的原因纯粹是视角的伪影。如果旋转绘图,您将看到点确实位于x-z平面上的
y=2
Yeah。我明白你的意思了……我正在将这张图与模拟软件中的另一张图进行比较,其中的点确实位于y=2的网格线上,所以我认为我需要调整一些东西。好的,请看下面我的答案。我希望有帮助