自制成绩表,绘制柱形图(三组),x轴刻度标签为姓名,使用三种不同方法为三组柱形分别设置颜色(不要红色和绿色)。要有图例。 在此图上添加一组散点,大圆圈,散点y轴位置1,针对某一科目成绩做如下标记,
时间: 2024-12-14 10:29:15 浏览: 2
iOS使用Charts框架绘制柱形图
制作自制成绩表并绘制柱状图的过程可以分为以下几个步骤:
1. **数据准备**:
首先,你需要有一个包含学生姓名、各科成绩的数据列表,比如:
```
data = [
{"姓名": "张三", "数学": 85, "英语": 90, "物理": 78},
{"姓名": "李四", "数学": 92, "英语": 88, "物理": 85},
# 更多学生...
]
```
2. **绘制柱状图**:
- **方法一:matplotlib** (Python):
```python
import matplotlib.pyplot as plt
colors = ['#FFA500', '#FFFF00', '#008080'] # 不使用红色和绿色的颜色
fig, ax = plt.subplots()
for i, group in enumerate(['数学', '英语', '物理']):
students = [d[group] for d in data]
ax.bar(data[0]['姓名'], students, color=colors[i], label=group)
ax.set_xlabel('姓名')
ax.set_ylabel('成绩')
ax.set_xticklabels([d['姓名'] for d in data])
ax.legend(title='科目')
plt.show()
```
- **方法二:pandas + plotly** (Python):
```python
import pandas as pd
import plotly.express as px
df = pd.DataFrame(data)
fig = px.bar(df, x="姓名", y=[f"{col}" for col in df.columns[:-1]], color_discrete_sequence=colors, labels={'姓名': '姓名'}, barmode='stack')
fig.update_layout(legend_title_text='科目')
fig.show()
```
- **方法三:Matplotlib的barh()函数** (Python) (适用于横向柱状图):
```python
ax.barh(data[0]['姓名'], students, color=colors, label=group, tick_label=data[0]['姓名'])
```
3. **添加散点图**:
要添加散点图表示某一科目成绩,并将其放在Y轴坐标1处,你可以这样做:
```python
special_student = {'姓名': '王五', '特殊科目分数': 98}
special_data = pd.Series(special_student, name='特殊科目')
ax.scatter(special_data.index, [1] * len(special_data), marker='o', s=special_data.values*100, c=colors[0], label='特殊科目')
ax.plot(special_data.index, [1] * len(special_data), 'o', ms=special_data.values*100, c=colors[0]) # 或者使用plot代替scatter
```
请注意,以上代码示例假设你已经安装了相应的库。实际操作中,需要将数据结构按照需求调整,并根据你使用的工具调整代码细节。
阅读全文