import pandas as pd import matplotlib.pyplot as plt # 读取 Excel 文件的第一列和第二列 data = pd.read_excel('高钾二氧化硅风化前后箱线图数据.xlsx', sheet_name="Sheet1", usecols=[0, 1]) plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定使用中文支持的字体 plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题 # 绘制箱线图 plt.figure(figsize=(8, 4)) # 设置图形大小 # 遍历每一列数据 for i, column in enumerate(data.columns): # 提取列数据 column_data = data[column] # 绘制箱线图 plt.boxplot(column_data, positions=[i + 1], widths=0.6, patch_artist=True, boxprops=dict(facecolor=f"C{i}"), capprops=dict(color=f"C{i}"), whiskerprops=dict(color=f"C{i}"), flierprops=dict(markeredgecolor=f"C{i}"), medianprops=dict(color="black")) # 设置横坐标刻度 plt.xticks(range(1, len(data.columns) + 1), data.columns) # 设置网格线 plt.grid(True) # 设置图形属性 plt.xlabel('Column') plt.ylabel('Value') plt.title('Boxplot of Each Column') # 显示图形 plt.tight_layout() plt.show()
时间: 2024-04-17 10:23:10 浏览: 128
这段代码是使用 pandas 和 matplotlib 绘制箱线图的示例。首先,通过 `pd.read_excel` 函数读取 Excel 文件的第一列和第二列数据,并存储在 `data` 中。然后,使用 `plt.rcParams` 设置中文字体和负号显示。接下来,创建一个图形,并使用 `enumerate` 遍历每一列数据。对于每一列数据,提取列数据并使用 `plt.boxplot` 绘制箱线图。最后,设置横坐标刻度、网格线和图形属性,并显示图形。
相关问题
import pandas as pd import matplotlib.pyplot as plt # 读取 CSV 文件并转换为 DataFrame 对象 df = pd.read_csv('pyechart.csv') data = df.values # 绘制热力图 plt.imshow(data, cmap='coolwarm') # 设置x轴和y轴标签 plt.xlabel('Point Index') plt.ylabel('Point Index') # 显示颜色条 plt.colorbar() # 显示图像 plt.show() # 打印 DataFrame 对象修改代码指定图名
您可以使用 `plt.title()` 函数来指定图名,修改后的代码如下所示:
```
import pandas as pd
import matplotlib.pyplot as plt
# 读取 CSV 文件并转换为 DataFrame 对象
df = pd.read_csv('pyechart.csv')
data = df.values
# 绘制热力图
plt.imshow(data, cmap='coolwarm')
# 设置 x 轴和 y 轴标签
plt.xlabel('Point Index')
plt.ylabel('Point Index')
# 显示颜色条
plt.colorbar()
# 指定图名
plt.title('Heatmap of Pyechart')
# 显示图像
plt.show()
# 打印 DataFrame 对象
print(df)
```
请注意,您需要将 `Heatmap of Pyechart` 替换成您想要的图名。
改进代码,增加功能可选任意几个标题生成曲线。代码如下:import pandas as pd import matplotlib.pyplot as plt # 读取CSV文件 data = pd.read_csv('your_file_path.csv') # 获取所有标题 titles = data.columns.tolist() # 用户选择要绘制的标题 selected_title = input("Please enter the title you want to plot: ") # 获取相应标题的数据列 selected_data = data[selected_title] # 绘制曲线图 plt.plot(selected_data) plt.title(selected_title) plt.xlabel("Index") plt.ylabel("Value") plt.show()
可以考虑添加一个多选框,让用户选择要绘制的标题,而不是只能选择一个。代码如下:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.widgets import CheckButtons
# 读取CSV文件
data = pd.read_csv('your_file_path.csv')
# 获取所有标题
titles = data.columns.tolist()
# 多选框
options = [plt.axes([0.025*i, 0.5, 0.1, 0.1], facecolor='lightgoldenrodyellow') for i in range(len(titles))]
check = CheckButtons(options, titles, actives=[False for _ in titles])
# 获取用户选择的标题
selected_titles = []
def func(label):
if label in selected_titles:
selected_titles.remove(label)
else:
selected_titles.append(label)
check.on_clicked(func)
# 绘制曲线图
def plot_selected_data(selected_titles):
for title in selected_titles:
selected_data = data[title]
plt.plot(selected_data, label=title)
plt.xlabel("Index")
plt.ylabel("Value")
plt.legend()
plt.show()
# 调用函数
plot_selected_data(selected_titles)
阅读全文