注:如需所用表格数据,可在本人主页资源栏内直接下载
制作并列条形图
探究价格与屏幕尺寸,制程工艺的相关性
新建方法
def parallel_bar_chart():
读取表格
df = pd.read_csv("笔记本信息.csv", encoding='gb18030')
# print(df[['参考报价', '屏幕尺寸(单位:英寸)', '制程工艺(单位nm)']])
按照价格区间将数据分为六部分
first = df.where(df['参考报价'] < 10000).dropna()
second = df.where((df['参考报价'] >= 10000) & (df['参考报价'] < 20000)).dropna()
third = df.where((df['参考报价'] >= 20000) & (df['参考报价'] < 30000)).dropna()
fourth = df.where((df['参考报价'] >= 30000) & (df['参考报价'] < 40000)).dropna()
fifth = df.where((df['参考报价'] >= 40000) & (df['参考报价'] < 50000)).dropna()
sixth = df.where((df['参考报价'] >= 50000) & (df['参考报价'] <= 60000)).dropna()
将六部分数据中的平均尺寸存为一个列表
average_size = [first['屏幕尺寸(单位:英寸)'].mean(), second['屏幕尺寸(单位:英寸)'].mean(),
third['屏幕尺寸(单位:英寸)'].mean(), fourth['屏幕尺寸(单位:英寸)'].mean(),
fifth['屏幕尺寸(单位:英寸)'].mean(), sixth['屏幕尺寸(单位:英寸)'].mean()]
将六部分数据中的平均制程工艺存为一个列表
average_technology = [first['制程工艺(单位nm)'].mean(), second['制程工艺(单位nm)'].mean(),
third['制程工艺(单位nm)'].mean(), fourth['制程工艺(单位nm)'].mean(),
fifth['制程工艺(单位nm)'].mean(), sixth['制程工艺(单位nm)'].mean()]
价格区间作为横坐标
price = ["<1W", "1W~2W", "2W~3W", "3W~4W", "4W~5W", "5W~6W"]
作图
plt.figure(figsize=(18, 12), dpi=300)
plt.style.use('ggplot')
bar_width = 0.3 # 条形宽度
index_average_size = pd.np.arange(len(price)) # 平均尺寸条形图的横坐标
index_average_technology = index_average_size + bar_width # 平均制程工艺条形图的横坐标
# 使用两次 bar 函数画出两组条形图
plt.bar(index_average_size, height=average_size, width=bar_width, color='b', label='平均尺寸(单位:英寸)')
plt.bar(index_average_technology, height=average_technology, width=bar_width, color='g', label='平均制程工艺(单位:nm)')
plt.xticks(fontsize=25)
plt.yticks(fontsize=25)
plt.ylim([10, 18]) # 设置纵坐标范围
plt.legend(bbox_to_anchor=(0.38, 1.015), fontsize=25) # 显示图例
plt.xticks(index_average_size + bar_width / 2, price) # 让横坐标轴刻度显示价格区间, index_male + bar_width/2 为横坐标轴刻度的位置
plt.title('平均尺寸与平均制程工艺条形图', fontdict={'fontsize': 40, 'weight': 'bold'}) # 图形标题
plt.savefig("平均尺寸与平均制程工艺条形图.png", dpi=300)
plt.show()
成品图
成品如下图所示