educoder 5-2Python 计算思维训练——绘图进阶(答案)

本文通过编程展示了四种数据可视化图表:住宅商品房平均销售价格的柱状图,不同类型商品房销售价格的并列柱状图,2010年全国育龄妇女受教育程度的饼状图,以及15-64岁育龄妇女受教育程度与生育情况的多子图。这些图表详细分析了房价趋势和人口普查数据,提供了直观的统计信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第1关:柱状图 - 商品房销售价格统计图

# 请编写代码绘制住宅商品房平均销售价格柱状图

import matplotlib
matplotlib.use("Agg")

#  请在此添加实现代码  #
# ********** Begin *********#
import numpy as np
import matplotlib.pyplot as plt

#\是为了让数字换行
sale_price='12914 11826 12997 12306.41 \
            12327.28 11406 10608 8378 8667.02\
            8052.78 6922.52 5744 4196 4336 4588 4751'
year='2015 2014 2013 2012 2011 \
      2010 2009 2008 2007 2006 \
      2005 2004 2003 2002 2001 2000'

#处理x,y的数据,需要分割,并且进行排序
#先排序,再转化成int型列表
y=sale_price.split()
y.reverse()
y=[float(e) for e in y]

x=year.split()
x.reverse()
x=[int(e) for e in x]


#
x_labels=[]
for i in range(2000,2016):
    x_labels.append(i)
plt.xticks(x,x_labels,rotation=45) #横轴标签 旋转rotation
'''
plt.yticks(range(4000,13500,1000))
plt.ylim(4000,13500)
'''
y_labels=[]
for j in range(4000,13500,1000):
    y_labels.append(j) 
plt.yticks(y_labels)
plt.ylim(4000,13500)

plt.bar(x, y, color='#800080') 
plt.savefig("picture/step1/fig1.png")

# ********** End **********#

在这里插入图片描述

第2关:并列柱状图 - 商品房销售价格统计图

# -*- coding: utf-8 -*-
import matplotlib
matplotlib.use("Agg")

import matplotlib.pyplot as plt
import numpy as np


xstring = '2015 2014 2013 2012 2011     \
           2010 2009 2008 2007 2006     \
           2005 2004 2003 2002 2001    2000' #x轴标签

n = 6
ystring = ['']*n #y轴对应的6组数据
ystring[0] = '6793    6324    6237    5790.99    5357.1    5032    4681    3800    3863.9    3366.79    3167.66    2778    2359    2250    2170    2112'
ystring[1] = '6473    5933    5850    5429.93    4993.17    4725    4459    3576    3645.18    3119.25    2936.96    2608    2197    2092    2017    1948'
ystring[2] = '15157    12965    12591    11460.19    10993.92    10934    9662    7801    7471.25    6584.93    5833.95    5576    4145    4154    4348    4288'
ystring[3] = '12914    11826    12997    12306.41    12327.28    11406    10608    8378    8667.02    8052.78    6922.52    5744    4196    4336    4588    4751'
ystring[4] = '9566    9817    9777    9020.91    8488.21    7747    6871    5886    5773.83    5246.62    5021.75    3884    3675.14    3488.57    3273.53    3260.38'
ystring[5] = '4845    5177    4907    4305.73    4182.11    4099    3671    3219    3351.44    3131.31    2829.35    2235    2240.74    1918.83    2033.08    1864.37'

labels = ['Commercial housing', 'Residential commercial housing',
          'high-end apartments', 'Office Building', 'Business housing', 'Others'] #图例标签
colors = ['#ff7f50', '#87cefa', '#DA70D6', '#32CD32', '#6495ED', '#FF69B4'] #指定颜色


#  请在此添加实现代码  #
# ********** Begin *********#
#处理x/y的数据
x=xstring.split()
x.reverse()
x_labels=[int(e) for e in x]


y=[]
'''
方法一:
'''
for i in range(6):
    ystring[i]=ystring[i].split()
    ystring[i].reverse()
    y.append(list(map(float,ystring[i])))
'''
方法二:
for e in ystring:
    y.append(list(map(float,re.findall(r'[0-9]+\.?[0-9]*',e)))[::-1])
'''
bar_width=0.8
#设置纵横坐标

xindex=np.arange(1,92,6)#第一组数据的柱形起始位分别为 1,7,13,...91 ,间隔为 6 

fig, ax = plt.subplots()
'''
fig,ax = plt.subplots()等价于:
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
'''
for i in range(0,6):
    ax.bar(xindex+bar_width*i, y[i], bar_width ,color=colors[i])
#x轴数据起始位置为index序列


ax.set_xlim(-1,98) #闭区间
plt.xticks(xindex+bar_width*2.5,x_labels,rotation=45)

ax.set_ylim(1450,15300)#坐标轴范围
plt.yticks(np.arange(2000,16000,2000))#轴刻度

plt.legend(labels,loc='upper left')
plt.title('Selling Prices of Six Types of Housing')
 
 
plt.savefig('picture/step2/fig2.png')


# ********** End **********#


在这里插入图片描述

第3关:饼状图 - 2010 全国人口普查数据分析

# 请绘制育龄妇女的受教育程度分布饼图

import matplotlib
matplotlib.use("Agg")

#  请在此添加实现代码  #
# ********** Begin *********#
import matplotlib.pyplot as plt

labels=['none', 'primary', 'junior', 'senior',
        'specialties', 'bachelor', 'master']
colors=['red','orange','yellow','green','purple','blue','black']
sizes=[2052380,11315444,20435242,7456627,3014264,1972395,185028]

explode=(0,0,0.1,0,0,0,0)

plt.pie(sizes, explode=explode, labels=labels,colors=colors,
        shadow=True)

plt.axis('equal')  # 用于显示为一个长宽相等的饼图
plt.show() #展示图像
plt.savefig("picture/step3/fig3.png")



# ********** End **********#

在这里插入图片描述

第4关:多子图绘制 - 2010 全国人口普查数据分析

编程要求
2010 年全国按受教育程度分的 15 - 64 岁妇女平均活产子女数和平均存活子女数如下表所示:
请编写代码绘制图像,详细数据在右侧代码中已给出,具体编程要求如下:

包括两幅子图,左图是不同受教育程度育龄妇女生育子女的平均个数统计(按存活子女数统计),右图是不同受教育程度育龄妇女生育子女的存活比例(即存活子女数/活产子女数);

画布大小的宽高分别为 14, 5 英尺;

两幅子图都需添加横轴标签,标签列表labels在右侧代码中已给出;

左图线条颜色设置为红色red,线性采用默认设置;

右图线条颜色设置为蓝色blue,线性采用默认设置;

请存储输出图像,图像名字为 picture/step4/fig4.png 。


import matplotlib
matplotlib.use("Agg")

import matplotlib.pyplot as plt
import numpy as np

labels = ['none', 'primary', 'junior', 'senior', 'specialties', 'bachelor', 'master'] # 标签
womenCount = [2052380, 11315444, 20435242, 7456627, 3014264, 1972395, 185028]
birthMen = [2795259, 12698141, 13982478, 2887164, 903910, 432333, 35915]
birthWomen = [2417485, 11000637, 11897674, 2493829, 786862, 385718, 32270]
liveMen = [2717613, 12477914, 13847346, 2863706, 897607, 429809, 35704]
liveWomen = [2362007, 10854232, 11815939, 2480362, 783225, 384158, 32136]

#  请在此添加实现代码  #
# ********** Begin *********#

plt.figure(figsize=[14,5])
plt.subplot(121) # 绘图区域被分为 1 行 2 列,接下来绘制第一幅图
#图一
x = np.arange(len(labels))#x指的是横坐标间隔
plt.xticks(x,labels)
aver_livechild=[2.47,2.06,1.26,0.72,0.56,0.41,0.37]
plt.plot(x,aver_livechild,'r-')

#图二
plt.subplot(122)
x = np.arange(len(labels))
plt.xticks(x,labels)
y=(np.array(liveMen)+np.array(liveWomen))*100/(np.array(birthMen)+np.array(birthWomen))*1.0
plt.plot(x,y,'b-')

plt.savefig('picture/step4/fig4.png')


# ********** End **********#

在这里插入图片描述

### 回答1: Python 计算思维训练——绘图进阶包括使用 Python绘图库如 matplotlib 和 seaborn 进行数据可视化,学习创建不同类型的图表,如折线图、散点图、条形图、饼图等。同时还可以学习如何调整图表的样式、添加图例和标题等。 ### 回答2Python 计算思维训练的一个方面是绘图进阶,这意味着训练者将学习如何使用 Python 编程语言来创建更复杂的图形,并进一步了解算法和数据可视化。在这方面,Python 是一门非常适合初学者入门的编程语言,因为它的代码易于理解,有着强大的数据分析和可视化功能。 在 Python 中,绘制图形最重要的工具是 Matplotlib 库,它是一个非常流行的 Python 绘图工具,可以处理各种数据类型和各种可视化类型。Matplotlib 库可以让程序员轻松绘制各种类型的图形,如折线图,散点图,条形图等,并且可以以多种格式保存图像。 但是,绘制复杂图形需要更熟练的 Python 编程技能。训练者需要了解如何使用 Matplotlib API,编写自定义函数和类,并掌握常见功能比如数据的可视化、图形的注释和颜色的编辑等等。另外,训练者还需要深入了解如何使用一些常见的数据可视化库,例如 Seaborn 和 Plotly,这些库可以生成美观而有用的数据可视化结果。 在绘图进阶训练中,学生将学习如何使用 Python 计算思维来更好地理解和体现数据。Python 是一种高效的编程语言,能够轻松地处理各种类型和大小的数据集,训练者可以利用它来探索和可视化数据,识别数据的趋势、模式和异常值,以便做出更准确和有意义的结论。 总之,Python 计算思维训练绘图进阶方面可以帮助学生掌握更高级的编程技能,能够生成复杂美观的数据可视化效果,为更好地理解和分析数据打下坚实的基础。 ### 回答3: Python是一种高级编程语言,它具有高度的可读性和简单易学的特点,广泛应用于数据分析、机器学习、人工智能、Web开发等领域。在这些应用场景中,绘图是非常重要的一环。Python绘图工具也随着时间的推移而不断完善,使得绘图变得越来越容易和灵活。 在Python中,最常用的绘图工具是Matplotlib。它是一款基于Python绘图库,能够轻松地在Python语言中创建各种类型的图表和多级子图。Matplotlib可以输出高质量的PNG、PDF、SVG、EPS等格式的图片,在学术研究和工作中被广泛使用。 通过Matplotlib的学习,可以帮助我们了解如何使用Python进行数据可视化和交互式可视化。具体来说,Python绘图思维的训练需要掌握以下几个方面: 1. 数据准备 数据准备是绘制图表的基础。这个过程包括从多个来源获取数据,对数据进行处理和清理,并准备数据以用于绘图Python提供了很多强大的数据处理工具,比如NumPy、Pandas等。 2. 基本图表绘制 Python中最基本的绘图类型是线图、柱状图和散点图。Matplotlib提供了一组简单又灵活的函数来实现这些绘图类型,使得绘图过程非常容易。 3. 自定义图表 对于特定的应用场景,需要定制化的图表展示,Matplotlib也支持自定义的图表设计,包括修改颜色、字体、标记点等设置。 4. 组合图表 有时候需要将多个图表组合在一起以达到更全面的分析,Matplotlib也支持组合图表的设计。从简单的双轴图表到更复杂的多轴图表,Matplotlib提供了丰富的功能。 5. 交互式图表 最后,Python也支持交互式图表,这使得用户可以对图表进行缩放、平移、旋转和选择数据点等操作,从而深入了解数据的细节。 总之,在Python中进行绘图,需要数据处理、图表设计和交互式特性的支持。这些功能都可以通过Matplotlib实现,从而为学习者提供了强大的工具。对于正在进行数据分析、机器学习或其他领域的分析工作的从业人员和学生而言,掌握Python绘图思维的训练是至关重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值