|
|
可以获取。以下是具体方法:
- import matplotlib.pyplot as plt
- import numpy as np
- # 示例数据
- labels = ['A', 'B', 'C', 'D'] # x轴标签(分类)
- data1 = [10, 15, 7, 12] # 第一组柱子高度
- data2 = [8, 10, 14, 9] # 第二组柱子高度
- data3 = [5, 12, 10, 8] # 第三组柱子高度
- x = np.arange(len(labels)) # 柱子的x坐标
- width = 0.25 # 柱子的宽度
- fig, ax = plt.subplots()
- # 绘制多柱状图
- rects1 = ax.bar(x - width, data1, width, label='组1')
- rects2 = ax.bar(x, data2, width, label='组2')
- rects3 = ax.bar(x + width, data3, width, label='组3')
- # 获取y轴最大值(所有柱子中的最大高度)
- all_heights = data1 + data2 + data3
- y_max = max(all_heights) # 或者用 np.max(all_heights)
- print(f"Y轴最大值 (数据): {y_max}")
- # 获取x轴“最大值”的两种常见理解:
- # 1. 如果你的x轴是数值型(例如 x = [1,2,3,4]),想要x坐标最大值:
- if isinstance(x, np.ndarray):
- x_max_coord = x.max() + width * 2 # 考虑到最右侧柱子的偏移
- print(f"X轴坐标最大值 (考虑多柱偏移): {x_max_coord}")
- # 2. 更常见的情况:x轴是分类,我们关心有多少组(即刻度数量)
- x_group_count = len(labels)
- print(f"X轴分组数量: {x_group_count}")
- # 你也可以直接从坐标轴对象获取当前范围
- # 注意:这通常在绘制后调用,返回的是当前视图范围
- xlim_current = ax.get_xlim()
- ylim_current = ax.get_ylim()
- print(f"当前X轴范围: {xlim_current}")
- print(f"当前Y轴范围: {ylim_current}")
- # 设置图表
- ax.set_ylabel('Y值')
- ax.set_xlabel('X分组')
- ax.set_title('多柱状图示例')
- ax.set_xticks(x)
- ax.set_xticklabels(labels)
- ax.legend()
- plt.show()
复制代码
关键点解释:
1. Y轴最大值:直接比较所有柱状图数据列表,找出最大值。
2. X轴“最大值”:
* 对于分类轴,通常指分组数量 len(labels)。
* 对于数值轴,可计算最大坐标值(需考虑多柱的偏移宽度)。
3. 绘图后,可用 ax.get_xlim() 和 ax.get_ylim() 获取坐标轴当前显示范围。
这样就能灵活获取和控制图表边界了。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|