import pandas as pd import matplotlib.pyplot as plt # 读取表格数据 data = pd.read_excel('E:/应统案例大赛/附件1-股票交易数据/yuceclose.xlsx') # 获取14个股票的收盘价数据 closing_data = data.iloc[:, 1:15] # 假设收盘价数据在第2~15列中 # 绘制收盘价趋势图 closing_data.plot() # 设置图表标题和横纵坐标标签 plt.title('Closing Prices Trend') plt.xlabel('Date') plt.ylabel('Closing Price') # 显示图表 plt.show()修改代码使横坐标为表格中的日期
时间: 2024-02-23 11:02:30 浏览: 22
好的,修改代码使横坐标为表格中的日期,可以使用以下代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取表格数据
data = pd.read_excel('E:/应统案例大赛/附件1-股票交易数据/yuceclose.xlsx')
# 获取日期和14个股票的收盘价数据
date_data = data.iloc[:, 0] # 假设日期数据在第1列中
closing_data = data.iloc[:, 1:15] # 假设收盘价数据在第2~15列中
# 绘制收盘价趋势图
closing_data.plot(x=date_data)
# 设置图表标题和横纵坐标标签
plt.title('Closing Prices Trend')
plt.xlabel('Date')
plt.ylabel('Closing Price')
# 显示图表
plt.show()
```
在这个修改后的代码中,我们首先使用.iloc方法获取日期和14个股票的收盘价数据,然后将日期数据作为绘图的横坐标,通过调用DataFrame.plot方法实现收盘价趋势图。接着,我们设置了图表的标题和横纵坐标标签,并调用plt.show方法显示图表。
希望这个回答能对您有所帮助。如果您有其他问题,请随时提出。
相关问题
import pandas as pd from sklearn.cluster import DBSCAN from sklearn.metrics import confusion_matrix import matplotlib.pyplot as plt # 读取Excel数据 data = pd.read_excel('C:/Users/86178/Desktop/test/test/TF-IDF/SSG hole span版.xlsx') # 提取特征列 feature_columns = ["Bridge length (m)","Pier type","Foundation type","Hole","Span (m)", "Bearing type","Plane linear"] X = data[feature_columns] # 使用DBSCAN进行聚类 dbscan = DBSCAN(eps=0.5, min_samples=5) dbscan.fit(X) # 获取聚类结果 labels = dbscan.labels_
你的代码看起来基本上是正确的,但是在使用DBSCAN进行聚类之后,你可以使用混淆矩阵(confusion matrix)来评估聚类结果的准确性,而不是直接使用聚类标签。混淆矩阵可以显示实际类别与聚类标签之间的对应关系。
以下是一个示例代码,展示了如何计算混淆矩阵并将其绘制成热力图:
```python
import pandas as pd
from sklearn.cluster import DBSCAN
from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt
# 读取Excel数据
data = pd.read_excel('C:/Users/86178/Desktop/test/test/TF-IDF/SSG hole span版.xlsx')
# 提取特征列
feature_columns = ["Bridge length (m)","Pier type","Foundation type","Hole","Span (m)",
"Bearing type","Plane linear"]
X = data[feature_columns]
# 使用DBSCAN进行聚类
dbscan = DBSCAN(eps=0.5, min_samples=5)
dbscan.fit(X)
# 获取聚类结果
labels = dbscan.labels_
# 获取实际类别(如果有的话)
# actual_labels = data["actual_label_column"]
# 计算混淆矩阵
confusion_mat = confusion_matrix(actual_labels, labels)
# 绘制热力图
sns.heatmap(confusion_mat, annot=True, cmap="YlGnBu")
plt.xlabel('Predicted Labels')
plt.ylabel('Actual Labels')
plt.title('Confusion Matrix')
plt.show()
```
请将上述代码中的`actual_label_column`替换为你数据中实际的类别列,如果没有实际类别可以注释掉该行代码。然后运行脚本,就能够得到混淆矩阵并绘制成热力图了。
希望能对你有所帮助!如果有任何问题,请随时提问。
改进代码,增加功能可选任意几个标题生成曲线。代码如下: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)