【问题标题】:Matplotlib with Frequency of stringsMatplotlib 与字符串的频率
【发布时间】:2018-10-10 00:19:42
【问题描述】:

好的,所以我正在尝试创建一个比我在 R 中的“更漂亮”的图表。我想知道是否有任何简单的方法可以在一列中使用频率并在另一列中使用字符串。除了 xticks 之外,我发现的所有文档似乎都没有涉及这个主题。在 R 中,这相当简单,所以我觉得我在这里遗漏了一些东西。

在 R 中我可以简单地这样做:

> data<-read.table ("/home/myname/Desktop/hist.txt", sep="|")
> names (data)[2] = "Words"
> names (data)[1] = "Frequency"
> barplot(data$Frequency)

我的数据结构如下:

3059195|and
2066278|ant
1851521|it
1741203|was

我可以为单词分配数字,然后将其设置为刻度线,但我试图避免不必要的变通方法。

有人有一个好的最小例子吗?

类似这样的:

import matplotlib.pyplot as plt
import csv

x = []
y = []

with open('/home/shulby/Desktop/hist.txt','r') as csvfile:
    plots = csv.reader(csvfile, delimiter='|')
    for row in plots:
        x.append(int(row[0]))

plt.plot(x,y)
plt.xlabel('Words')
plt.ylabel('Frequency')
plt.title('Balanced Histogram')
plt.legend()
plt.show()

我只是不确定如何在这里处理“y”。

【问题讨论】:

  • 你能上传你的R图或想要的图吗?您的 R 代码将给出 4 个高度为 1 的条形,它们的 X 标签作为数字 (3059195 ...) 并且 y 从 0 到 1。这是您想要的吗?

标签: python r matplotlib bar-chart


【解决方案1】:

试试这个:

import matplotlib.pyplot as plt
import csv

x = []
y = []

with open('/home/shulby/Desktop/hist.txt','r') as csvfile:
    plots = csv.reader(csvfile, delimiter='|')
    for row in plots:
        y.append(int(row[0]))

N = len(y)
x = range(N)
plt.plot(x,y)
plt.xlabel('Words')
plt.ylabel('Frequency')
plt.title('Balanced Histogram')
plt.legend()
plt.show()

【讨论】:

    猜你喜欢
    • 2014-06-19
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 2016-05-18
    • 2017-04-19
    • 2011-10-23
    相关资源
    最近更新 更多