Python:在熊猫中设置刻度线

时间:2019-03-05 15:21:56

标签: python

我是Python的新手,不知道如何设置xticks。

此刻,它看起来像这样:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

#Data Read-In
freq = pd.read_csv('Netzfrequenz_Sekundenwerte_2012_KW37.csv', sep=';')
freq.set_index('Datum und Zeit UCT', inplace = True)

#Dataframe sum single values
sums = pd.DataFrame({'Counter': freq['Netzfrequenz in Hz'].value_counts()})
sums['Frequency'] = sums.index
sums = sums.sort_values(by='Frequency')

#plot
sums_plot = sums.plot(x='Frequency', y='Counter', kind='bar', figsize=(12, 9))
sums_plot.set_title('Frequency Distribution KW37 2012 Germany')

plt.show()

enter image description here

它显示过多的xticks。如何设置它仅显示几个?另外,我可以强制一个值(例如50)恰好位于x轴的中间吗?

还有其他建议:)

问候和感谢,

基里安

1 个答案:

答案 0 :(得分:0)

编辑:除非添加示例数据,否则我无法测试此修改后的解决方案,因此这里是我模拟一些数据的示例。您澄清说自己迷上了kind=bar,但请记住pd.DataFrame.plot无论如何都会返回plt.AxesSubplot对象。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns


#Dataframe sum single values
sums = pd.DataFrame({'Counter': [c+213 for c in range(100)]})
sums['Frequency'] = sums.index
sums = sums.sort_values(by='Frequency')

#plot
sums_plot = sums.plot(x='Frequency', y='Counter', kind='bar', figsize=(12, 9),
                     )
sums_plot.set_xticks([0, 25, 50, 75, 100])
sums_plot.set_xticklabels(["Bottom", "Low", "Middle", "High", "Top"])


plt.show()

如您所见,通过使用matplotlib set_对象熟悉的ax方法仍然可用。 set_xticksset_xticklabels处理模拟数据,如下所示。

Solution on mocked data


您有一些选择,但是一个简单的解决方案是使用xticks作为plot的参数。

sums_plot = sums.plot(x='Frequency', y='Counter', kind='bar', figsize=(12, 9), 
    xticks=[x*0.1 for x in range(490, 451)])

在这里,我指定了序列[49, 49.1, ...],因为我无法读取图像中混乱的刻度线的表示法。您只需自己编写一个序列即可手动设置刻度线(例如[49.0, 49.3, 49.6, 50.0])。