p15-项目2-生成数据
我是python版本3.8.8 不是python3的话自己去找一下python的安装语句
pip3 install matplotlib 安装命令
切记多试几次!
pip3 install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
如果上面的命令还不行可以用这个
多试几次的原因是每一次下载一部分包,多几次就下载好了
折线图
import matplotlib.pyplot as plt input_values = [1, 2, 3, 4, 5] squares = [1, 4, 9, 16, 25] # 使用内置样式 plt.style.use('seaborn') # fig 代表图片 ax代表各个图标 fig, ax = plt.subplots() # plot方法绘制图表 ax.plot(input_values, squares, linewidth=3) # 设置图标标题并给坐标 ax.set_title("平方数", fontsize=24) ax.set_xlabel("值", fontsize=14) ax.set_ylabel("值的平方", fontsize=14) # 设置刻度标记的大小 ax.tick_params(axis='both', labelsize=14) # RuntimeWarning: Glyph missing fromcurrent font. font.set_text(s, 0, flags=flags)解决方案 # 警告原因:plt 画图是找不到字体,需要添加两行程序,如下: # 建议放到最后 因为之前使用样式可能设置会被覆盖 plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文标签 plt.rcParams['axes.unicode_minus'] = False plt.show()
散点图 连起来就是线图
import matplotlib.pyplot as plt # 使用内置样式 plt.style.use('seaborn') # # input_values = [1, 2, 3, 4, 5] # squares = [1, 4, 9, 16, 25] # fig 代表图片 ax代表各个图标 fig, ax = plt.subplots() x_value = range(1, 1001) y_value = [x ** 2 for x in x_value] # scatter 方法绘制图表 # ax.scatter(x_value, y_value,c='red', s=10) 给颜色 # ax.scatter(x_value, y_value, c=(0, 0.8, 0), s=10) ax.scatter(x_value, y_value, c=y_value, cmap=plt.cm.Blues, s=10) # cmap使用那个颜色 c代表渐进 # 设置图标标题并给坐标 ax.set_title("平方数", fontsize=24) ax.set_xlabel("值", fontsize=14) ax.set_ylabel("值的平方", fontsize=14) # 设置刻度标记的大小 ax.tick_params(axis='both', labelsize=14) # 设置每个坐标轴的取值范围 ax.axis([0, 1100, 0, 1100000]) # RuntimeWarning: Glyph missing fromcurrent font. font.set_text(s, 0, flags=flags)解决方案 # 警告原因:plt 画图是找不到字体,需要添加两行程序,如下: # 建议放到最后 因为之前使用样式可能设置会被覆盖 plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文标签 plt.rcParams['axes.unicode_minus'] = False plt.show() # plt.savefig('plot.png', bbox_inches = 'tight') 保存 bbox_inches表示将空余部分去掉
随机漫步
import matplotlib.pyplot as plt from random_walk import RandomWalk # 只要程序处于活动状态 就不断的模拟随机漫步 while True: # 创建一个RandomWalk实例 rw = RandomWalk(50_000) rw.fill_walk() # 将所有的点画出来 plt.style.use('classic') # figsize 窗口的尺寸 单位是英寸 dpi是分辨率 其实我没太搞懂 但是dpi越高越清晰 fig, ax = plt.subplots(figsize=(16, 10), dpi= 100) point_numbers = range(rw.num_points) # edgecolors='none' 删除每个点的轮廓 从浅蓝色到深蓝色 ax.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues, edgecolors='none', s=1) # 突出起点和终点 ax.scatter(0, 0, c='green', edgecolors='none', s=100) ax.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none', s=100) # 隐藏坐标轴 ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) plt.show() keep_running = input("Make another walk? (y/n): ") if keep_running == 'n': break
直方图(条形图)模拟投骰子
1 投一个骰子
from plotly.graph_objs import Bar, Layout from plotly import offline from die import Die # 创建一个 D6. die = Die() # 投几次骰子并将结果放在一个列表中 results = [] for roll_num in range(1000): result = die.roll() results.append(result) # 分析结果 frequencies = [] for value in range(1, die.num_sides + 1): frequency = results.count(value) frequencies.append(frequency) print(frequencies) # 对结果进行可视化 x_values = list(range(1, die.num_sides + 1)) data = [Bar(x=x_values, y=frequencies)] x_axis_config = {'title': '结果'} y_axis_config = {'title': '结果的频率'} my_layout = Layout(title='投一个D6 1000次的结果', xaxis=x_axis_config, yaxis=y_axis_config) offline.plot({'data': data, 'layout': my_layout}, filename='d6.html')
2创建2个
from plotly.graph_objs import Bar, Layout from plotly import offline from die import Die # 创建2个 D6. die1 = Die() die2 = Die() # 投几次骰子并将结果放在一个列表中 results = [] for roll_num in range(1000): result = die1.roll() + die2.roll() results.append(result) # 分析结果 frequencies = [] max_result = die1.num_sides + die2.num_sides for value in range(2, max_result + 1): frequency = results.count(value) frequencies.append(frequency) print(frequencies) # 对结果进行可视化 x_values = list(range(2, max_result + 1)) data = [Bar(x=x_values, y=frequencies)] # dtick 刻度值 x_axis_config = {'title': '结果', 'dtick': 1} y_axis_config = {'title': '结果的频率'} my_layout = Layout(title='投2个D6 1000次的结果', xaxis=x_axis_config, yaxis=y_axis_config) offline.plot({'data': data, 'layout': my_layout}, filename='d6_d6.html')
1个6面一个十面
from plotly.graph_objs import Bar, Layout from plotly import offline from die import Die # 创建2个 D6. die1 = Die(6) die2 = Die(10) # 投几次骰子并将结果放在一个列表中 results = [] for roll_num in range(50_000): result = die1.roll() + die2.roll() results.append(result) # 分析结果 frequencies = [] max_result = die1.num_sides + die2.num_sides for value in range(2, max_result + 1): frequency = results.count(value) frequencies.append(frequency) print(frequencies) # 对结果进行可视化 x_values = list(range(2, max_result + 1)) data = [Bar(x=x_values, y=frequencies)] # dtick 刻度值 x_axis_config = {'title': '结果', 'dtick': 1} y_axis_config = {'title': '结果的频率'} my_layout = Layout(title='投1个D6和1个D10 50000次的结果', xaxis=x_axis_config, yaxis=y_axis_config) offline.plot({'data': data, 'layout': my_layout}, filename='d6_d10.html')
总结:感觉是一个比较简单的库,如何深入使用和高阶的玩法值得探究

浙公网安备 33010602011771号