我想绘制一张柱状图,共用一个y轴,两侧的横坐标都是[1,1]、[1,2]、[1,3]、[1,4]、[2,1]、[2,2]、[2,3]、[2,4],从接近零的方向开始排列。
时间: 2024-12-25 14:06:11 浏览: 3
要绘制这样的双轴柱状图,你可以使用数据可视化库如Matplotlib或Seaborn(Python),它们都支持创建复杂数字图表。在这种情况下,可以使用`twinx()`函数在同一坐标系下创建两个独立的Y轴,然后分别给每个轴设置对应的区间和刻度。
这里是一个简化的Python示例,使用Matplotlib:
```python
import matplotlib.pyplot as plt
import numpy as np
# 数据
data1 = [1, 2, 3, 4]
data2 = [1, 2, 3, 4]
# 横坐标
x1 = np.array([1, 1, 1, 1, 2, 2, 2, 2])
x2 = np.repeat(np.arange(1, 5), 2)
# 创建第一个图形,设置左侧Y轴
fig, ax1 = plt.subplots()
ax1.bar(x1, data1)
ax1.set_xlim([0.9, 2.1]) # 调整横坐标的范围
ax1.set_ylim([0, max(data1)]) # 设置左侧Y轴的上限
ax1.yaxis.tick_left() # 只在左边显示Y轴刻度
# 创建第二个图形,设置右侧Y轴
ax2 = ax1.twinx()
ax2.bar(x2, data2)
ax2.set_ylim([0, max(data2)])
ax2.yaxis.tick_right() # 右边显示Y轴刻度
# 标记两条Y轴
ax1.yaxis.label.set_color('tab:blue')
ax2.yaxis.label.set_color('tab:red')
# 显示网格线
ax1.grid(axis='y', linestyle='-.')
ax2.grid(axis='y', linestyle='-.')
plt.show()
阅读全文