import pandas as pd
import matplotlib.pyplot as plt
data = {
'文物编号': ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56','57','58'],
'纹饰': ['C', 'A', 'A', 'A', 'A', 'A', 'B', 'C', 'B', 'B', 'C', 'B', 'C', 'C', 'C', 'C', 'C', 'A', 'A', 'A', 'A', 'B', 'A', 'C', 'C', 'C', 'B', 'A', 'A', 'A', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C','C', 'A','C', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'C', 'C', 'A', 'C','C','C','C','C'],
'类型': ['高钾', '铅钡', '高钾', '高钾', '高钾', '高钾', '高钾', '铅钡', '高钾', '高钾', '铅钡', '高钾', '高钾', '高钾', '高钾', '高钾', '高钾', '高钾', '铅钡', '铅钡', '高钾', '高钾', '铅钡', '铅钡', '铅钡', '铅钡', '高钾', '铅钡', '铅钡', '铅钡','铅钡', '铅钡', '铅钡', '铅钡', '铅钡', '铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡','铅钡'],
'颜色': ['蓝绿', '浅蓝', '蓝绿', '蓝绿', '蓝绿', '蓝绿', '蓝绿', '紫', '蓝绿', '蓝绿', '浅蓝', '蓝绿', '浅绿', '深绿', '浅蓝', '浅蓝', '浅蓝', '深蓝', 'X','浅蓝', '蓝绿', '蓝绿', '蓝绿', '紫', '浅蓝', '紫', '蓝绿', '浅蓝', '浅蓝', '深蓝', '紫', '浅绿', '深绿', '深绿', '浅绿', '深绿', '深绿', '深绿', '深绿', 'X', '浅绿', '浅蓝', '浅蓝', '浅蓝', '浅蓝', '浅蓝', '浅蓝', 'X', '黑', '黑', '浅蓝','浅蓝','浅蓝','浅蓝','绿','蓝绿','蓝绿','X'],
'表面风化': ['无风化', '风化', '无风化', '无风化', '无风化', '无风化', '风化', '风化', '风化', '风化', '风化', '风化', '无风化', '无风化', '无风化', '无风化', '无风化', '无风化', '风化', '无风化', '无风化', '风化', '风化', '无风化', '风化', '风化', '风化', '风化', '风化', '无风化', '无风化', '无风化', '无风化', '风化', '无风化', '风化', '无风化', '风化', '风化', '风化', '风化', '风化', '风化', '风化', '无风化', '无风化', '无风化', '风化', '风化', '风化','风化','风化','风化','风化','无风化','风化','风化','风化']
}
df = pd.DataFrame(data)
df.replace('X', pd.NA, inplace=True)
df.dropna(subset=['颜色'], inplace=True)
type_counts = df['类型'].value_counts()
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用中文黑体字体
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
plt.bar(type_counts.index, type_counts.values)
plt.xlabel('玻璃类型')
plt.ylabel('数量')
plt.title('不同玻璃类型的文物数量分布')
plt.show()
pattern_counts = df['纹饰'].value_counts()
plt.bar(pattern_counts.index, pattern_counts.values)
plt.xlabel('纹饰')
plt.ylabel('数量')
plt.title('不同纹饰的文物数量分布')
plt.show()
color_counts = df['颜色'].value_counts()
plt.bar(color_counts.index, color_counts.values)
plt.xlabel('颜色')
plt.ylabel('数量')
plt.title('不同颜色的文物数量分布')
plt.show()
color_wind_counts = df.groupby(['颜色', '表面风化']).size().unstack()
color_wind_counts.plot(kind='bar', stacked=True)
plt.xlabel('颜色')
plt.ylabel('数量')
plt.title('不同颜色下的表面风化情况')
plt.legend(title='表面风化')
plt.show()
您好请问,我这个代码已经可以正常输出结果了,但是如何将输出的图像导出呢?
【以下回答由 GPT 生成】
首先,我们可以使用pandas
库将数据集转换为数据框(DataFrame),然后使用matplotlib
库进行数据可视化。
以下是解决问题的步骤:
import pandas as pd
import matplotlib.pyplot as plt
data = {
'文物编号': ['01', '02', ... '57', '58'],
'纹饰': ['C', 'A', ... 'C']
}
df = pd.DataFrame(data)
counts = df['纹饰'].value_counts()
plt.bar(counts.index, counts.values)
plt.xlabel('纹饰')
plt.ylabel('数量')
plt.title('纹饰数量统计')
plt.show()
plt.savefig('visualization.png')
整体代码如下:
import pandas as pd
import matplotlib.pyplot as plt
data = {
'文物编号': ['01', '02', ..., '57', '58'],
'纹饰': ['C', 'A', ..., 'C']
}
df = pd.DataFrame(data)
counts = df['纹饰'].value_counts()
plt.bar(counts.index, counts.values)
plt.xlabel('纹饰')
plt.ylabel('数量')
plt.title('纹饰数量统计')
plt.show()
plt.savefig('visualization.png')
以上是使用Python对数据进行可视化并导出结果的解决方案。如果你有进一步的问题,请随时提问。
【相关推荐】
可以使用plt.savefig