题目一:绘制等高线图

编写程序。根据第8.1,绘制如下图的等高线图。

运行代码:

#绘制等高线图
import numpy as np
import matplotlib.pyplot as plt
#计算高度
def calcu_evevation(x1, y1):
    h = (1-x1/2 + x1**5 + y1**3)*np.exp(-x1**2 - y1**2)
    return h

n = 256
x = np.linspace(-2, 2, n)
y = np.linspace(-2, 2, n)
#利用meshgrid()函数生成网格数据
x_grid, y_grid = np.meshgrid(x, y)
fig = plt.figure()
ax = fig.add_subplot(111)
#绘制等高线
con = ax.contour(x_grid, y_grid, calcu_evevation(x_grid, y_grid),
                 8, colors = 'black')#将colors写成color等高线为彩色
#填充等高线的颜色
ax.contourf(x_grid, y_grid, calcu_evevation(x_grid, y_grid),
                 8, alpha=0.75, cmap=plt.cm.copper)
#为等高线添加文字标签
ax.clabel(con, inline=True, fmt = "%1.1f", fontsize=10)
ax.set_xticks([])
ax.set_yticks([])
plt.show()

运行结果:

题目二:绘制矢量场流线图

编写程序。根据第8.2,绘制如下图的矢量场流线图。

运行代码:

#绘制矢量场流线图
import numpy as np
import matplotlib.pyplot as plt
y, x = np.mgrid[0: 5: 50j, 0: 5: 50j]
u = x
v = y
fig = plt.figure()
ax = fig.add_subplot(111)
#绘制矢量场流线图
ax.streamplot(x, y, u, v)
plt.show()

运行结果:

题目三:绘制棉棒图

编写程序。根据第8.3,绘制如下图的棉棒图。

运行代码:

#绘制棉棒图
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
x = np.arange(1, 16)
y = np.array([5.9, 6.2, 6.7, 7.0, 7.0, 7.1, 7.2, 7.4,
              7.5, 7.6, 7.7, 7.7, 7.7, 7.8, 7.9])
labels = np.array(['宝骏310', '宝马i3', '致享', '焕驰', '力帆530',
                   '派力奥', '悦翔V3', '乐风RV', '奥迪A1', '威驰FS',
                   '夏利N7', '启辰R30', '和悦A13RS', '致炫', '赛欧'])
fig = plt.figure(figsize=(10, 6), dpi=80)
ax = fig.add_subplot(111)
#绘制棉棒图
markerline, stemlines, baseline = ax.stem(x, y, linefmt='--',
                                          markerfmt='o', label=labels, use_line_collection=True)
#设置棉棒图线段的属性
plt.setp(stemlines, lw=1)
ax.set_title('不同品牌轿车的燃料消耗量', fontdict={'size':18})
ax.set_ylabel('燃料消耗量(L/km)')
ax.set_xticks(x)
ax.set_xticklabels(labels, rotation=60)
ax.set_ylim([0, 10])
for temp_x, temp_y in zip(x, y):
    ax.text(temp_x, temp_y+0.5, s='{}'.format(temp_y),
            ha='center', va='bottom', fontsize=14)
plt.show()

运行结果:

题目四:绘制哑铃图

编写程序。根据第8.4,绘制如下图的哑铃图。

运行代码:

#绘制哑铃图
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
df = pd.read_excel(r'D:\数据可视化\13\health.xlsx')
df.sort_values('pct_2014', inplace=True)
df.reset_index(inplace=True)
df = df.sort_values(by='index')
def newline(p1, p2, color='black'):
    ax = plt.gca()#获取当前的绘图区域
    l = mlines.Line2D([p1[0], p2[0]], [p1[1], p2[1]], color='skyblue')
    ax.add_line(l)
    return l
fig, ax = plt.subplots(1, 1, figsize=(8, 6))
#绘制散点
ax.scatter(y=df['index'], x=df['pct_2013'], s=50, color='#0e668b', alpha=0.7)
ax.scatter(y=df['index'], x=df['pct_2014'], s=50, color='#a3c4dc', alpha=0.7)
#绘制线条
for i, p1, p2 in zip(df['index'], df['pct_2013'], df['pct_2014']):
    newline([p1, i], [p2, i])
ax.set_title('2013年与2014年美国部分城市人口PCT指标的变化率', fontdict={'size':12})
ax.set_xlim(0, .25)
ax.set_xticks([.05, .1, .15, .20])
ax.set_xticklabels(['5%', "10%", '15%', '20%'])
ax.set_xlabel('变化率')
ax.set_yticks(df['index'])
ax.set_yticklabels(df['city'])
ax.grid(alpha=0.5, axis='x')
plt.show()

运行结果:

题目五:绘制甘特图

编写程序。根据第8.5,绘制如下图的甘特图。

运行代码:

#绘制甘特图
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
ticks = np.array(['报告提交', '数据分析', '数据录入', '实地执行', '问卷确定', '试访', '问卷设计', '项目确定'])
y_data = np.arange(1, 9)
x_data = np.array([0.5, 1.5, 1, 3, 0.5, 1, 1,2])
fig,ax = plt.subplots(1, 1)
ax.barh(y_data, x_data, tick_label=ticks,
left=[7.5, 6, 5.5, 3, 3, 2, 1.5, 0], color='#CD5C5C')
[ax.spines[i].set_visible(False) for i in ['top', 'right']]
ax.set_title("任务甘特图")
ax.set_xlabel("日期")
ax.grid(alpha=0.5, axis='x')
plt.show()

运行结果:

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐