英文:
How can i overlap graphs using Python?
问题
我正在尝试使用Python绘制一些图表。我使用了这个数据文件:https://datahub.io/core/global-temp/r/annual.csv。
Annual = pd.read_csv("https://datahub.io/core/global-temp/r/annual.csv", sep=',', keep_default_na=False)
数据集包括相同时间线的两个来源。我想展示共同的图表以及它们各自的图表。还有三个图表。
alt.Chart(Annual, title= "1880-2016年的年度温度变化").mark_line().encode(
alt.X('Year:O'),
alt.Y('Mean'),
)
我已经能够从彼此过滤出不同的来源。
gcag = Annual.loc[0::2]
gistemp = Annual.loc[1::2]
如何将"Annual"(已经在工作中)和"gcag"、"gistemp"合并在一起?对于初学者,您有什么建议吗?也许不仅仅是线形图...
谢谢。
英文:
I am trying to do some graphs with Python. I used this data file: https://datahub.io/core/global-temp/r/annual.csv.
Annual = pd.read_csv("https://datahub.io/core/global-temp/r/annual.csv", sep=',', keep_default_na=False)
The Data Set includes 2 sources for the same timeline. I want to show the common graph and every one for their own. Also 3 Graphs.
alt.Chart(Annual, title= "Annual Temperature Change from 1880-2016").mark_line().encode(
alt.X('Year:O'),
alt.Y('Mean'),
)
I was able to filter sources from each other
gcag = Annual.loc[0::2]
gistemp = Annual.loc[1::2]
How can I bring "Annual"(which is already working) and "gcag", "gistemp" all together? Do you have any tips for an beginner? Maybe more than a line graph...
Ty.
答案1
得分: 1
我还没有使用过alt
库的经验,但根据您的描述,以下是我做的可能对您有帮助的内容:
- 数据集有两个不同的来源,您提到希望有一个命名为"common"的第三层。基于此,我假设您想要每年在GISTEMP和GCAG之间计算平均值。因此,以下是您可以尝试的代码片段:
avg_temp_by_year = Annual.groupby('Year').agg({'Mean':'mean'}).reset_index()
avg_temp_by_year['Source'] = 'ANNUAL'
- 接下来,通过执行以下操作将这个新数据集追加到现有数据集中:
new_df = pd.concat([Annual, avg_temp_by_year], axis=0, ignore_index=True)
- 绘制三个图表。对于此示例,我使用了
seaborn
库,它非常适合数据可视化:
import seaborn as sns
sns.lineplot(data=new_df, x='Year', y='Mean', hue='Source')
附注1:hue
是一个参数,您可以传递它以在同一图上创建不同的图层。在此示例中,它接收了Source
列,因为现在它包含了3个可能的值(ANNUAL、GISTEMP和GCAG)。
附注2:我鼓励您阅读文档(https://seaborn.pydata.org/generated/seaborn.lineplot.html)并尝试找到更好的方法来显示这些线条。
希望这个答案对您有所帮助!祝好运
英文:
I haven't had any experience with the alt
library yet, but based on what you described, here is what I did that might be helpful for you:
- the dataset has 2 different sources and you mentioned that you wanted a third layer that you named as "common". Based on that, I assumed you want an average value between GISTEMP and GCAG, for each year. Thus, here is the snippet you could try:
avg_temp_by_year = Annual.groupby('Year').agg({'Mean':'mean'}).reset_index()
avg_temp_by_year['Source'] = 'ANNUAL'
- next, append this new dataset to the pre-existing dataset, by doing:
new_df = pd.concat([Annual, avg_temp_by_year], axis=0, ignore_index=True)
- plot the three graphs. For this example, I used the
searbon
library, which is a great one for data visualizations:
import seaborn as sns
sns.lineplot(data=new_df, x='Year', y='Mean', hue='Source')
PS1: hue
is a parameter that you can pass to create different layers on the same graph. In this example, it receives the Source
column, since it is comprised of the 3 possible values now (ANNUAL, GISTEMP and GCAG)
PS2: I encourage you to read the docs (https://seaborn.pydata.org/generated/seaborn.lineplot.html) and try to find a better way to display those lines.
I hope this answer helps you!
Good luck
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论