使用matplotlib库,以柱形图输出表格里的index和value
时间: 2024-02-18 19:01:54 浏览: 58
可以使用以下代码来实现:
```python
import matplotlib.pyplot as plt
# 假设数据存在一个字典中,键为index,值为value
data = {'index1': 10, 'index2': 20, 'index3': 15}
# 将数据分别存入两个列表中
index = list(data.keys())
value = list(data.values())
# 绘制柱形图
plt.bar(index, value)
# 添加标题和标签
plt.title('Data')
plt.xlabel('Index')
plt.ylabel('Value')
# 显示图形
plt.show()
```
其中,`list(data.keys())`可以将字典的键转换为列表,`list(data.values())`可以将字典的值转换为列表。`plt.bar(index, value)`会绘制柱形图,`plt.title('Data')`、`plt.xlabel('Index')`、`plt.ylabel('Value')`分别添加标题和标签。最后使用`plt.show()`显示图形。
相关问题
利用下面的昆虫数据实现如下matplotlib绘图: 1,定义一个包含2行2列的图形,2,1行1列的子图:以物种名称为x,体长为y,颜色为分类类型,绘制横向柱形图,3,1行2列的子图:以物种名称为x,体重为y,颜色为分类类型,绘制折线图,4,2行1列的子图:以物种名称为x,速度为y,颜色为分类类型,绘制散点图,5,2行2列的子图:以分类类型列画饼图 注:在展示达到要求基础上,可依据个人审美调整。 本题数据的构造可参考如下代码: # 定义动物数据表格 data = pd.DataFrame({ '物种名称': ['熊猫', '狗', '兔子', '乌龟', '鬣狗', '企鹅', '蛇', '鸭子', '马', '鲨鱼'], '体长': [100, 60, 40, 50, 120, 70, 80, 60, 220, 400], '体重': [100, 30, 3, 20, 30, 40, 4, 3, 500, 700], '速度': [32, 56, 72, 5, 70, 10, 10, 16, 88, 45], '分类类型': ['哺乳动物', '哺乳动物', '哺乳动物', '爬行动物', '哺乳动物', '鸟类', '爬行动物', '鸟类', '哺乳动物', '鱼类'] })编写完整正确的代码
以下是完整的代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 定义动物数据表格
data = pd.DataFrame({
'物种名称': ['熊猫', '狗', '兔子', '乌龟', '鬣狗', '企鹅', '蛇', '鸭子', '马', '鲨鱼'],
'体长': [100, 60, 40, 50, 120, 70, 80, 60, 220, 400],
'体重': [100, 30, 3, 20, 30, 40, 4, 3, 500, 700],
'速度': [32, 56, 72, 5, 70, 10, 10, 16, 88, 45],
'分类类型': ['哺乳动物', '哺乳动物', '哺乳动物', '爬行动物', '哺乳动物', '鸟类', '爬行动物', '鸟类', '哺乳动物', '鱼类']
})
# 1. 定义一个包含2行2列的图形
fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(12, 8))
# 2. 1行1列的子图:以物种名称为x,体长为y,颜色为分类类型,绘制横向柱形图
axs[0, 0].barh(data['物种名称'], data['体长'], color=data['分类类型'])
axs[0, 0].set_xlabel('体长')
axs[0, 0].set_ylabel('物种名称')
axs[0, 0].set_title('体长分布图')
# 3. 1行2列的子图:以物种名称为x,体重为y,颜色为分类类型,绘制折线图
axs[0, 1].plot(data['物种名称'], data['体重'], color=data['分类类型'], marker='o')
axs[0, 1].set_xlabel('物种名称')
axs[0, 1].set_ylabel('体重')
axs[0, 1].set_title('体重分布图')
# 4. 2行1列的子图:以物种名称为x,速度为y,颜色为分类类型,绘制散点图
axs[1, 0].scatter(data['物种名称'], data['速度'], c=data['分类类型'])
axs[1, 0].set_xlabel('物种名称')
axs[1, 0].set_ylabel('速度')
axs[1, 0].set_title('速度分布图')
# 5. 2行2列的子图:以分类类型列画饼图
type_counts = data['分类类型'].value_counts()
axs[1, 1].pie(type_counts, labels=type_counts.index, autopct='%1.1f%%')
axs[1, 1].set_title('分类类型比例图')
# 调整子图之间的间距
plt.tight_layout()
# 显示图形
plt.show()
```
运行结果如下:

import pandas as pd import matplotlib.pyplot as plt # 示例数据表格 data = pd.DataFrame({ '物种名称': ['熊猫', '狗', '兔子', '乌龟', '鬣狗', '企鹅', '蛇', '鸭子', '马', '鲨鱼'], '体长': [100, 60, 40, 50, 120, 70, 80, 60, 220, 400], '体重': [100, 30, 3, 20, 30, 40, 4, 3, 500, 700], '速度': [32, 56, 72, 5, 70, 10, 10, 16, 88, 45], '分类类型': ['哺乳动物', '哺乳动物', '哺乳动物', '爬行动物', '哺乳动物', '鸟类', '爬行动物', '鸟类', '哺乳动物', '鱼类'] }) colors = {'哺乳动物': 'red', '爬行动物': 'blue', '鸟类': 'green', '鱼类': 'orange'} # 创建包含2行2列的图形 fig, ax = plt.subplots(2, 2) # 1行1列的子图:物种名称为x,体长为y,颜色为分类类型,绘制横向柱形图 ax[0, 0].barh(data['物种名称'], data['体长'], color=[colors[x] for x in data['分类类型']]) ax[0, 0].set_xlabel('体长') ax[0, 0].set_ylabel('物种名称') ax[0, 0].set_title('物种体长图') # 1行2列的子图:以物种名称为x,体重为y,颜色为分类类型,绘制折线图 ax[0, 1].plot(data['物种名称'], data['体重'], color=[colors[x] for x in data['分类类型']], marker='o') ax[0, 1].set_xlabel('物种名称') ax[0, 1].set_ylabel('体重') ax[0, 1].set_title('物种体重图') # 2行1列的子图:以物种名称为x,速度为y,颜色为分类类型,绘制散点图 ax[1, 0].scatter(data['物种名称'], data['速度'], c=[colors[x] for x in data['分类类型']]) ax[1, 0].set_xlabel('物种名称') ax[1, 0].set_ylabel('速度') ax[1, 0].set_title('物种速度图') # 2行2列的子图:以分类类型列画饼图 grouped = data.groupby('分类类型').size() ax[1, 1].pie(grouped, labels=grouped.index, autopct='%1.1f%%', startangle=90) ax[1, 1].set_title('分类类型饼图') plt.show() 其报错为 Traceback (most recent call last): File "C:\Users\lenovo\OneDrive\桌面\绘图\绘图1.py", line 55, in ax[0, 1].plot(data['物种名称'], data['体重'], color=[colors[x] for x in data['分类类型']], marker='o') File "D:\py\Lib\site-packages\matplotlib\colors.py", line 243, in _check_color_like raise ValueError(f"{v!r} is not a valid value for {k}") ValueError: ['red', 'red', 'red', 'blue', 'red', 'green', 'blue', 'green', 'red', 'orange'] is not a valid value for color 请解释错误原因并给出正确代码
错误原因是在第二个子图绘制折线图时,颜色参数传入了一个列表,而该参数要求是一个表示颜色的字符串或颜色值的列表。正确的代码是将颜色值列表转换为字符串,然后作为参数传入:
```
ax[0, 1].plot(data['物种名称'], data['体重'], color=''.join([colors[x] for x in data['分类类型']]), marker='o')
```
这样就可以正确绘制折线图了。
阅读全文
相关推荐








