我是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()
它显示过多的xticks。如何设置它仅显示几个?另外,我可以强制一个值(例如50)恰好位于x轴的中间吗?
还有其他建议:)
问候和感谢,
基里安
答案 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_xticks
和set_xticklabels
处理模拟数据,如下所示。
您有一些选择,但是一个简单的解决方案是使用 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]
)。