我试图使R上的图看起来像Python上的图:
这是Python和R的数据框架。
所有_航班_合并_月
| 年份|月份|延迟_计数|总计_计数|
| - ------|- ------|- ------|- ------|
| 二○ ○三年|一月|小行星151238|小行星552109|
| 二○ ○三年|二月|小行星158369|小行星500206|
| 二○ ○三年|马尔|小行星152156|小行星559342|
| 二○ ○三年|四月|小行星125|小行星527303|
| 二○ ○三年|五月|小行星136551|小行星533782|
| 二○ ○三年|六月|小行星163497|小行星536496|
| 二○ ○三年|七月|小行星183491|小行星558568|
| 二○ ○三年|八月|小行星178979|小行星556984|
| 二○ ○三年|九月|小行星113916|小行星527714|
| 二○ ○三年|十月|小行星131409|小行星552370|
| 二○ ○三年|十一月|小行星157157|小行星528171|
| 二○ ○三年|12月|小行星206743|小行星555495|
| 二○ ○四年|一月|小行星198818|小行星583987|
| 二○ ○四年|二月|小行星183|小行星553876|
| 二○ ○四年|马尔|小行星183273|小行星6014一二|
| 二○ ○四年|四月|小行星170114|小行星582970|
| 二○ ○四年|五月|小行星191604|小行星594457|
| 二○ ○四年|六月|小行星238|小行星588792|
| 二○ ○四年|七月|小行星237670|小行星614166|
| 二○ ○四年|八月|小行星215667|小行星623107|
| 二○ ○四年|九月|小行星147508|小行星585125|
| 二○ ○四年|十月|小行星193|小行星610037|
| 二○ ○四年|十一月|小行星1975|小行星584610|
| 二○ ○四年|12月|小行星254786|小行星606731|
| 二○ ○五年|一月|小行星229809|小行星594924|
| 二○ ○五年|二月|小行星184920|小行星545332|
| 二○ ○五年|马尔|小行星226883|小行星617540|
| 二○ ○五年|四月|小行星169221|小行星594492|
| 二○ ○五年|五月|小行星178327|小行星614802|
| 二○ ○五年|六月|小行星236724|小行星609195|
| 二○ ○五年|七月|小行星268988|小行星627961|
| 二○ ○五年|八月|小行星240410|小行星630904|
| 二○ ○五年|九月|小行星165541|小行星574253|
| 二○ ○五年|十月|小行星186778|小行星592712|
| 二○ ○五年|十一月|小行星193399|小行星566138|
| 二○ ○五年|12月|小行星256861|小行星572343|
下面是Python的代码:
# To plot the line graph
# Create separate data frames for each year
years = All_Flights_Combined_Month['Year'].unique()
data_frames_month = [All_Flights_Combined_Month[All_Flights_Combined_Month['Year'] == year] for year in years]
# Create subplots
fig, ax = plt.subplots(figsize=(10, 8))
# Plot Delay_count for each year
for i, year in enumerate(years):
color = 'red' if str(year) == '2003' else 'green' if str(year) == '2004' else 'blue'
ax.plot(data_frames_month[i]['Month'], data_frames_month[i]['Delay_count'], label=f"{year} Delay Count", color=color)
# Plot Total_Count for each year
for i, year in enumerate(years):
color = 'orange' if str(year) == '2003' else 'yellow' if str(year) == '2004' else 'purple'
ax.plot(data_frames_month[i]['Month'], data_frames_month[i]['Total_Count'], label=f"{year} Total Count", color=color)
# Set title and labels
ax.set_title('Flight Count by Month')
ax.set_xlabel('Month')
ax.set_ylabel('Number of Flights')
# Add legend
ax.legend(title='Year')
# Save the plot as a pdf file
plt.savefig('Monthly Flight Comparison Python.pdf', format='pdf')
# Show the plot
plt.show()
这是针对R的:
{r}
# To plot the line graph
month_plot <- ggplot() + geom_line(data= All_Flights_Combined_Month, aes(x =Month, y=Delay_count, group=Year, color=Year)) +
geom_line(data=All_Flights_Combined_Month, aes(x =Month, y=Total_count, group=Year, color=Year))+ scale_x_discrete(limits = c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"))+
xlab("Months")+
ylab("Number of Flights")+
ggtitle("Flight Count by Month")
# To save the plot as .pdf
ggplot2::ggsave("Monthly Flight Comparison R.pdf", plot = last_plot(), width = 8, height = 6)
我需要的图例和线的颜色,以配合Python的。我希望我已经提供了足够的信息。请善意的意见,谢谢。
我尝试将scale_color_manual添加到每个geom_line,但它产生了一个错误,指出scale_color_manual值已经被使用,它将覆盖以前的值。
4条答案
按热度按时间f4t66c6m1#
这类问题通常与数据整形有关。格式应为长格式,而数据为宽格式。有关如何将数据从宽格式整形为长格式,请参阅this post。
然后将变量
Year
或name
更改为这两个变量之间的交互,这就是颜色和分组变量。创建于2023年2月19日,使用reprex v2.0.2
数据
创建于2023年2月19日,使用reprex v2.0.2
iyfamqjs2#
大概是这样的
m1m5dgzv3#
您可以将数据转换为更长的格式,并使用
paste0
和gsub
将Year和Delay count和Total count的更长格式合并为一个字符串。要获得正确的颜色,您可以使用scale_color_manual
,并使用breaks
进行正确的排序,如下所示:创建于2023年2月19日,使用reprex v2.0.2
qhhrdooz4#
首先,将
reshape
转换为宽格式,然后使用matplot
并稍微定制axis
和mtext
。