Python 2.7 使用pandas和matplotlib的分组折线图
我有这样一个数据集: 数据集可在以下位置找到: 我想画一个折线图,包含每年的犯罪率。 大概是这样的:Python 2.7 使用pandas和matplotlib的分组折线图,python-2.7,pandas,matplotlib,Python 2.7,Pandas,Matplotlib,我有这样一个数据集: 数据集可在以下位置找到: 我想画一个折线图,包含每年的犯罪率。 大概是这样的: 但图中显示了x轴上的连续年份,如2005.5 2007.5。 有人能帮忙吗?或者建议一种更好的方法。谢谢 代码如下: %matplotlib inline import pandas as pd import numpy as np from matplotlib import pyplot as plt import plotly.plotly as py import seaborn a
但图中显示了x轴上的连续年份,如2005.5 2007.5。 有人能帮忙吗?或者建议一种更好的方法。谢谢 代码如下:
%matplotlib inline
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import plotly.plotly as py
import seaborn as sns
cd =pd.read_clipboard() #after copying the dataset from given url above
yearRate = cd[['Year','ViolentCrimeRate','MurderRate','RapeRate','RobberyRate','AggravatedAssaultRate','PropertyCrimeRate','BurglaryRate','LarcenyTheftRate','MotorVehicleTheftRate']]
# These are the "Tableau 20" colors as RGB.
tableau20 = [(31, 119, 180), (174, 199, 232), (255, 127, 14), (255, 187, 120),
(44, 160, 44), (152, 223, 138), (214, 39, 40), (255, 152, 150),
(148, 103, 189), (197, 176, 213), (140, 86, 75), (196, 156, 148),
(227, 119, 194), (247, 182, 210), (127, 127, 127), (199, 199, 199),
(188, 189, 34), (219, 219, 141), (23, 190, 207), (158, 218, 229)]
for i in range(len(tableau20)):
r, g, b = tableau20[i]
tableau20[i] = (r / 255., g / 255., b / 255.)
plt.figure(figsize=(20,15))
ax = plt.subplot(111)
ax.spines['top'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.ylim(0,5000)
plt.xlim(1994, 2013)
plt.yticks(fontsize=14)
plt.xticks(fontsize=14)
for y in range(0, 5000, 1000):
plt.plot(range(1994, 2013), [y] * len(range(1994, 2013)), "--", lw=0.5, color="black", alpha=0)
rates=['ViolentCrimeRate','MurderRate','RapeRate','RobberyRate','AggravatedAssaultRate','PropertyCrimeRate','BurglaryRate','LarcenyTheftRate','MotorVehicleTheftRate']
for rank, column in enumerate(rates):
# Plot each line separately with its own color, using the Tableau 20
# color set in order.
plt.plot(yearRate.Year.values,yearRate[column.replace("\n", " ")].values,lw=2.5, color=tableau20[rank])
# Add a text label to the right end of every line. Most of the code below
# is adding specific offsets y position because some labels overlapped.
y_pos = yearRate[column.replace("\n", " ")].values[-1] - 0.5
if column == "MotorVehicleTheftRate":
y_pos -= 50
elif column == "MurderRate":
y_pos -= 50
plt.text(2013, y_pos, column, fontsize=14, color=tableau20[rank])
添加:
plt.xticks(cd['Year'])
解决了这个问题。你能提供一个简单的例子吗?特别是如果有一些可复制粘贴的代码就更好了。@ArcoBast你想让我将代码粘贴到这里还是数据集?你能在你的原始帖子中编辑它,这样我就可以复制粘贴代码并立即运行吗?对不起,这个复制粘贴步骤对我不起作用。可能您想签出此链接:您需要从提供的链接复制数据集(它将保存在clipbaord中):然后运行代码,读取)剪贴板()将从clipbaord加载数据