如何用Python绘制X与Y、Z的关联图(非三维图)
Python实现X与Y、Z的关联图方案
问题描述
用户拥有如下数据集:
X Y Z 4 3 2 5 6 9 1 2 10
希望绘制X与Y、Z的关联图,形式类似plot(X,(Y,Z)),并非三维图,询问Python是否可实现,以及scipy.interpolate.griddata是否适用。
实现方案
完全可以用Python实现这类需求,且不需要用到scipy.interpolate.griddata(该工具用于离散点插值生成网格数据,适用于热力图、等高线图等场景,与当前需求不匹配)。你要的其实是在同一坐标系中,以X为横轴,同时绘制Y和Z两条曲线(或散点),直观展示X分别与Y、Z的关联关系。
方法1:使用Matplotlib手动绘制
import matplotlib.pyplot as plt # 定义数据 X = [4, 5, 1] Y = [3, 6, 2] Z = [2, 9, 10] # 创建绘图画布 plt.figure(figsize=(8, 5)) # 绘制X-Y、X-Z的折线+散点 plt.plot(X, Y, marker='o', color='blue', label='Y') plt.plot(X, Z, marker='s', color='orange', label='Z') # 添加图表元素 plt.xlabel('X') plt.ylabel('Value') plt.title('X vs Y & Z') plt.legend() # 显示图形 plt.show()
方法2:使用Pandas快速绘制(适合DataFrame格式数据)
如果数据是以DataFrame形式存储,可直接利用Pandas的绘图接口:
import pandas as pd import matplotlib.pyplot as plt # 构建DataFrame df = pd.DataFrame({ 'X': [4, 5, 1], 'Y': [3, 6, 2], 'Z': [2, 9, 10] }) # 设置X为索引,绘制Y和Z的折线图 df.set_index('X').plot(marker='o', figsize=(8, 5)) plt.xlabel('X') plt.ylabel('Value') plt.title('X vs Y & Z') plt.show()
以上两种方式都会生成同一横轴下的两条曲线,清晰展示X与Y、Z的关联关系,完全符合你想要的plot(X,(Y,Z))效果。
内容的提问来源于stack exchange,提问作者Iphy Kelvin
相关产品推荐
相关产品推荐

