python可视化||折线图、多个子图等详细设置

1.数据导入

通常习惯用pandas做处理,引入库、读取对应位置文件:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sympy import *

data_control1 = pd.read_csv("原/原方案车辆数占有率.csv")
data_control2 = pd.read_csv("5/原方案车辆数占有率.csv")

2.带点折线图生成

显示设置:字体、正负号

# 绘图

plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示汉字

多个折线图绘制在同一个图中

x = data_control2["仿真时间"]
y1 = data_control1['西向直行排队车辆数']
y2 = data_control2['西向直行排队车辆数']
y3 = data_control3['西向直行排队车辆数']
y4 = data_control4['西向直行排队车辆数']
fig2 = plt.figure(figsize=(18, 9))

plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=0.7)
# 左侧坐标
ax1 = fig2.add_subplot(111)
ax1.plot(x, y1, linestyle=':', color='r', label='原方案西进口直行排队车辆数')
ax1.plot(x, y2, '-', color='g', label='优化方案西进口直行排队车辆数')
ax1.plot(x, y3, linestyle=':', color='y', label='原方案西进口直行排队车辆数')
ax1.plot(x, y4, '-', color='b', label='优化方案西进口直行排队车辆数')
ax1.set_ylabel('排队车辆数(veh)')
ax1.set_xlabel('仿真时间(s)')
plt.legend(["原西进口排队车辆数变化趋势", "西进口车流减少1/5时排队车辆数变化趋势", "西进口车流减少1/4时排队车辆数变化趋势", "西进口车流减少1/3时排队车辆数变化趋势"])
plt.show()

多个子图、详解看注释

# 绘图
# -------------------------平均速度---------------------
plot = plt.figure()
fig1 = plt.figure(figsize=(15, 9))  # 图纸大小
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=0.7)  # 子图边距设置
plt.subplot(4, 1, 1)     # (行,列,位置)
plt.plot(data_control1["仿真时间"], data_control1['西向直行排队车辆数'], marker='o', markersize=3)
plt.title("原西进口排队车辆数变化趋势")  # 图的标题
plt.ylabel("排队车辆数(veh)")  # 横轴名
plt.xlabel("仿真时间(s)")  # 纵轴名

plt.subplot(4, 1, 2)     # 只有一张图,也可以多张
plt.plot(data_control2["仿真时间"], data_control2['西向直行排队车辆数'], marker='o', markersize=3)
plt.title("西进口车流减少1/5时排队车辆数变化趋势")  # 图的标题
plt.ylabel("排队车辆数(veh)")  # 横轴名
plt.xlabel("仿真时间(s)")   # 纵轴名


plt.subplot(4, 1, 3)     # (行,列,位置)
plt.plot(data_control3["仿真时间"], data_control3['西向直行排队车辆数'], marker='o', markersize=3)
plt.title("西进口车流减少1/4时排队车辆数变化趋势")  # 图的标题
plt.ylabel("排队车辆数(veh)")  # 横轴名
plt.xlabel("仿真时间(s)")  # 纵轴名

plt.subplot(4, 1, 4)     # 只有一张图,也可以多张
plt.plot(data_control4["仿真时间"], data_control4['西向直行排队车辆数'], marker='o', markersize=3)
plt.title("西进口车流减少1/3时排队车辆数变化趋势")  # 图的标题
plt.ylabel("排队车辆数(veh)")  # 横轴名
plt.xlabel("仿真时间(s)")   # 纵轴名
plt.show()

完整代码:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sympy import *

data_control1 = pd.read_csv("原/原方案车辆数占有率.csv")
data_control2 = pd.read_csv("5/原方案车辆数占有率.csv")
data_control3 = pd.read_csv("4/原方案车辆数占有率.csv")
data_control4 = pd.read_csv("3/原方案车辆数占有率.csv")


# 绘图

plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示汉字
# 绘图
# -------------------------平均速度---------------------
plot = plt.figure()
fig1 = plt.figure(figsize=(15, 9))  # 图纸大小
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=0.7)  # 子图边距设置
plt.subplot(4, 1, 1)     # (行,列,位置)
plt.plot(data_control1["仿真时间"], data_control1['西向直行排队车辆数'], marker='o', markersize=3)
plt.title("原西进口排队车辆数变化趋势")  # 图的标题
plt.ylabel("排队车辆数(veh)")  # 横轴名
plt.xlabel("仿真时间(s)")  # 纵轴名

plt.subplot(4, 1, 2)     # 只有一张图,也可以多张
plt.plot(data_control2["仿真时间"], data_control2['西向直行排队车辆数'], marker='o', markersize=3)
plt.title("西进口车流减少1/5时排队车辆数变化趋势")  # 图的标题
plt.ylabel("排队车辆数(veh)")  # 横轴名
plt.xlabel("仿真时间(s)")   # 纵轴名

plt.subplot(4, 1, 3)     # (行,列,位置)
plt.plot(data_control3["仿真时间"], data_control3['西向直行排队车辆数'], marker='o', markersize=3)
plt.title("西进口车流减少1/4时排队车辆数变化趋势")  # 图的标题
plt.ylabel("排队车辆数(veh)")  # 横轴名
plt.xlabel("仿真时间(s)")  # 纵轴名

plt.subplot(4, 1, 4)     # 只有一张图,也可以多张
plt.plot(data_control4["仿真时间"], data_control4['西向直行排队车辆数'], marker='o', markersize=3)
plt.title("西进口车流减少1/3时排队车辆数变化趋势")  # 图的标题
plt.ylabel("排队车辆数(veh)")  # 横轴名
plt.xlabel("仿真时间(s)")   # 纵轴名
plt.show()

# 单个车辆加速度,速度

x = data_control2["仿真时间"]
y1 = data_control1['西向直行排队车辆数']
y2 = data_control2['西向直行排队车辆数']
y3 = data_control3['西向直行排队车辆数']
y4 = data_control4['西向直行排队车辆数']
fig2 = plt.figure(figsize=(18, 9))

plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=0.7)
# 左侧坐标
ax1 = fig2.add_subplot(111)
ax1.plot(x, y1, linestyle=':', color='r', label='原方案西进口直行排队车辆数')
ax1.plot(x, y2, '-', color='g', label='优化方案西进口直行排队车辆数')
ax1.plot(x, y3, linestyle=':', color='y', label='原方案西进口直行排队车辆数')
ax1.plot(x, y4, '-', color='b', label='优化方案西进口直行排队车辆数')
ax1.set_ylabel('排队车辆数(veh)')
ax1.set_xlabel('仿真时间(s)')
plt.legend(["原西进口排队车辆数变化趋势", "西进口车流减少1/5时排队车辆数变化趋势", "西进口车流减少1/4时排队车辆数变化趋势", "西进口车流减少1/3时排队车辆数变化趋势"])
plt.show()

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Python中,通过使用pandas库中的read_excel函数可以导入Excel文件。然后,使用matplotlib库中的pyplot来画折线图和柱状图的组合图。 首先,需要在命令行或Jupyter Notebook中导入所需的库。 ``` import pandas as pd import matplotlib.pyplot as plt ``` 接下来,使用pandas库中的read_excel函数加载Excel文件。假设文件名为data.xlsx,文件中包含需要用于绘制组合图的数据。 ``` df = pd.read_excel('data.xlsx') ``` 接下来,可以使用matplotlib库中的pyplot来画折线图和柱状图的组合图。假设需要绘制X轴为日期,Y轴1为销售额,Y轴2为利润的组合图,可以按照如下步骤执行。 ``` fig, ax1 = plt.subplots() ax2 = ax1.twinx() ax1.plot(df['Date'], df['Sales'], color='red', label='Sales') ax2.bar(df['Date'], df['Profit'], alpha=0.5, label='Profit') ax1.set_xlabel('Date') ax1.set_ylabel('Sales', color='red') ax2.set_ylabel('Profit', color='blue') ax1.tick_params(axis='y', colors='red') ax2.tick_params(axis='y', colors='blue') plt.legend() plt.show() ``` 在这段代码中,fig, ax1 = plt.subplots()用于创建一个包含两个子图的图形对象。ax2 = ax1.twinx()用于创建第二个Y轴和它的刻度。接下来,使用ax1.plot和ax2.bar命令分别在两个不同的子图中绘制折线图和柱状图。使用ax1.set_xlabel和ax1.set_ylabel和ax2.set_ylabel命令来设置X轴和两个Y轴的标签。最后,使用plt.legend()和plt.show()将图形对象显示出来。 这样,就可以用Python绘制带有折线图和柱状图的组合图了。 ### 回答2: Python是一种功能强大的编程语言,它有很多库可以用于数据分析和可视化。对于画折线图和柱状图的组合图,我们可以使用pandas和matplotlib库。 首先,我们需要安装pandas和matplotlib库。可以通过命令行输入以下命令进行安装: ``` pip install pandas pip install matplotlib ``` 然后,我们需要导入Excel数据。可以使用pandas库中的read_excel函数来读取Excel文件。以下是一个示例代码: ```python import pandas as pd df = pd.read_excel('data.xlsx') ``` 此代码将数据存储在一个名为df的pandas数据帧中。接下来,我们可以使用matplotlib库来画折线图和柱状图的组合图。以下是一个示例代码: ```python import matplotlib.pyplot as plt #画折线图 plt.plot(df['日期'], df['销售额']) #画柱状图 plt.bar(df['日期'], df['订单量']) #添加标题和标签 plt.title('销售额和订单量') plt.xlabel('日期') plt.ylabel('金额') #显示图表 plt.show() ``` 此代码将在一个坐标系中绘制折线图和柱状图。我们可以使用title,xlabel和ylabel函数来添加标题和标签,使用show函数来显示图表。 总之,使用Python折线图和柱状图的组合图非常简单。我们只需要借助pandas和matplotlib这两个库就可以完成。通过导入Excel数据和一些可视化技巧,我们可以让数据更加生动、直观,更好地理解和分析数据。 ### 回答3: Python是一门强大的编程语言,支持多种数据处理和图形绘制的应用。在数据分析中,我们经常需要导入Excel文件中的数据,并根据数据进行图形绘制和分析。本文将介绍如何在Python中导入Excel文件,并绘制折线图和柱形图的组合图。 第一步,导入数据。为了导入Excel文件,我们需要使用Python的第三方库pandaspandas可以方便地读取Excel文件,并转换成pandas.DataFrame格式,以便于数据操作和图形展示。如下所示: ```python import pandas as pd data = pd.read_excel('data.xlsx') # 读取Excel文件 ``` 第二步,绘制折线图。绘制折线图需要用到Python的另一个第三方库matplotlib。matplotlib可以实现各种图形的绘制,包括折线图、散点图、柱状图等等。折线图的绘制可以使用matplotlib的plot()函数。如下所示: ```python import matplotlib.pyplot as plt plt.plot(data['x'], data['y']) # 绘制折线图 ``` 第三步,绘制柱状图。绘制柱状图也需要使用matplotlib库,但是柱状图的绘制需要用到matplotlib的bar()函数。如果要绘制多组数据的柱状图,可以使用groupby()函数将数据按照一列或多列分组,然后用bar()函数绘制。如下所示: ```python import matplotlib.pyplot as plt grouped = data.groupby('category') # 按照category列分组 for name, group in grouped: plt.bar(group['x'], group['y'], label=name) # 绘制柱状图 ``` 第四步,绘制组合图。绘制组合图需要将折线图和柱状图在同一个画布上绘制。可以使用matplotlib的subplot()函数将画布分成多个子图,然后在子图中绘制折线图和柱状图。如下所示: ```python import matplotlib.pyplot as plt fig, ax = plt.subplots() # 创建画布和子图 ax.plot(data['x'], data['y'], label='line') # 绘制折线图 grouped = data.groupby('category') # 按照category列分组 for name, group in grouped: ax.bar(group['x'], group['y'], label=name) # 绘制柱状图 ax.legend() # 显示图例 plt.show() # 显示图像 ``` 通过上述步骤,我们可以在Python中导入Excel文件,并绘制折线图和柱状图的组合图。Pythonpandas和matplotlib库提供了方便的数据处理和图形绘制工具,可以大大提高数据分析和可视化的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值